Azure HTTP 触发器 - 如何从输入绑定中提取查询参数值 - cosmosDB

问题描述 投票:0回答:1

我正在关注这个示例,但需要从查询参数中记录 id

输入的是

const cosmosInput = input.cosmosDB({
    databaseName: 'ToDoItems',
    collectionName: 'Items',
    id: '{id}',
    partitionKey: '{partitionKeyValue}',
    connectionStringSetting: 'CosmosDBConnection', });

用作时

const toDoItem = context.extraInputs.get(cosmosInput);

cosmosInput 对象是 json

{
  "databaseName": "demo",
  "containerName": "todo",
  "id": "{id}",
  "partitionKey": "{partitionKeyValue}",
  "connection": "CosmosDBConnection",
  "type": "cosmosDB",
  "name": "cosmosDBInputdc9624d5bb"
}

要提取 id,cosmosInput.id 类似于 {id},而不是 url 中的实际值。所以这不是选择。

如何获取通过 URL 查询参数提供的真实值?

http://localhost:7071/api/storageOutBinding?id=172&partitionKeyValue=6
azure azure-functions inputbinding
1个回答
0
投票

在查询中传递

id
partitionKey
的值。您需要使用您正在关注的
文档
中提到的
{Query.id}
{Query.partitionkey}

这对我有用。

httpTrigger1.js
:

const { app, input } = require('@azure/functions');

const cosmosInput = input.cosmosDB({
    databaseName: 'ToDoList',
    containerName: 'Items',
    id: '{Query.id}',
    partitionKey: '{Query.partitionKey}',
    connection: 'CosmosDBConnection'
    
});

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraInputs: [cosmosInput],
    handler: async (request, context) => {
        context.log(`Http function processed request for url "${request.url}"`);
        
        const toDoItem = context.extraInputs.get(cosmosInput);
        if (!toDoItem) {
            return {
                status: 404,
                body: 'ToDoList item not found',
            };
        } else {
            return {
                body: `Found ToDoList item, Message=${toDoItem.message}`,
            };
        }
    },
});

DB data

{
    "id": "1",
    "partitionKey": "10",
    "message": "Hello, This data is from query string"
}

OUTPUT

© www.soinside.com 2019 - 2024. All rights reserved.