我在CosmosDB中有两个集合,股票
和股票价格
。
股票价格
集合保存所有历史价格,并不断更新。
我想创建一个Azure函数,它监听< code>StockPrices更新(< code>CosmosDBTrigger),然后对触发器传递的每个< code >文档执行以下操作:
股票
集合中查找具有匹配代码的股票股票
集合中更新股票价格我不能用<code>CosmosDB(绑定仅在触发器传递单个项时有效)。
我看到它工作的唯一方法是,如果我在CosmosDBTrigger
List上前行
,并从我的函数体访问CosmosDB并执行上面的步骤1和2。
问题:如何从我的功能中访问CosmosDB?
最终接受了诺亚·斯塔尔的建议。把这个留在这里作为替代方案。
我不知道如何直接做到这一点,所以想出了一个变通办法:
foreach
来自触发器的< code >文档,序列化并添加到< code >队列 < li >添加带有< code>QueueTrigger、< code>CosmosDB输入绑定的函数,用于< code >股票集合(将< code>PartitionKey和< code>Id设置为< code>StockTicker),以及< code>CosmosDB输出绑定的函数,用于< code >股票集合 < li >用< code>QueueTrigger中的值更新< code>CosmosDB输入绑定中的< code>Stock < li >将更新的< code>Stock分配给< code>CosmosDB输出绑定参数(更新数据库中的记录)
也就是说,我想听听更直接的方法来做到这一点,因为我的方法看起来像是一种黑客。
CosmosDB绑定形式之一是获取DocumentClient实例,该实例提供容器上的所有操作。通过这种方式,您应该能够将变更提要触发器和项目操作组合到同一个函数中,如:
[FunctionName("ProcessStockChanges")]
public async Task Run(
[CosmosDBTrigger(/* Trigger params */)] IReadOnlyList<Document> changedItems,
[CosmosDB(/* Client params */)] DocumentClient client,
ILogger log)
{
// Read changedItems,
// Create/read/update/delete with client
}
也可以使用。NET Core使用依赖注入为您的函数实例提供成熟的自定义服务/存储库类以与Cosmos接口。这是我首选的方法,因为我可以使用最新版本的Cosmos SDK进行验证、控制序列化等。
您可能有意这样做,但只是提到考虑将数据合并到单个容器中,例如,按记录类型(Stock/StockPrice)和标识符的组合进行分区。这简化了事情,并且相对于多个容器,可以提高成本/资源效率。
我对Azure函数和CosmosDB输出绑定有问题。我现在拥有的是:我从一个Cosmos DB容器中读取数据,处理一些东西,然后将结果输出回同一个DB但不同的容器。我正在使用VSCode和python,并测试了其他输出(blob、HTTP响应等),所有这些都正常工作,所以我认为这是CosmosDB的问题。 主要功能定义如下: function.json输出绑定如下: 请注意,我使用和我的扩展手动安
我制作了一个Azure函数(http触发器),并使用Visual Studio 2019将其部署在门户中。 该函数工作正常,我现在将添加一个绑定到我的CosmosDB。我导航到我的函数,然后单击“集成”。现在我看到了触发器、函数以及输入和输出绑定。 我应该可以在这里添加一个新的输入绑定。但我没有“添加”按钮。我做错了什么?
在Azure Functions中,我可以轻松地创建到Cosmos DB Connection的输入绑定,并指定SqlQuery,以便在每次调用时将一些数据传递到我的函数中,如下所述:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-cosmosdb#input---example-2 我想知道这个查
我想根据它触发的事件网格事件的内容(python worker 运行时)将 cosmos 文档提取到我的 azure 函数中。可以做到这一点吗? 我有下面的function.json: 我想将查询中事件的属性用于cosmos输入绑定。我在这里尝试了主题。它失败了: [2020年6月4日下午5时34分45秒]系统。Private.CoreLib:执行函数时出现异常:Functions.orch_ta
在app服务中有一个learn_DOCUMENTDB配置设置,它具有到cosmos db实例的有效连接字符串(是自动创建的)。 错误日志条目表示: 无法将CosmosDB绑定到类型“System.String”。可能的原因:1)试图绑定到“Microsoft.Azure.Documents.Client.DocumentClient,Microsoft.Azure.DocumentDB.Core,
我正在使用ARM模板为我的Azure资源创建CI/CD管道。在我的Arm模板中,我使用zipdeploy来部署我的azure函数的代码。 基本上,我需要指定包Uri,它需要通过互联网访问。 在我的 Azure 管道中,我正在创建函数的 zip 包,并使用 dotnet 发布发布到 Azure 管道项目,然后我获取 URL:https://dev.azure.com/ifolor/_apis/res