我在azure函数中有cosmos db触发器,当文档更改时会触发,这很好。
但是我的文档很大,触发器中只需要更新的属性。
我可以通过比较旧文档和新文档来解决此问题,但是在触发条件下,我只能获取更新的文档。
有没有办法在触发器中获取旧的和更新的文档。
我的Azure Function触发器是
module.exports = async function (context, documents) {
if (!!documents && documents.length > 0) {
context.log('Document Id: ', documents[0].id);
context.log('Document : ', documents[0]);
}
context.done(); }
我的函数绑定是
{ "bindings": [
{
"type": "cosmosDBTrigger",
"name": "documents",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "AzureWebJobsCosmosDBConnectionString",
"databaseName": "ToDoList",
"collectionName": "Items",
"createLeaseCollectionIfNotExists": true
} ], "disabled": false }
预先感谢
答案 0 :(得分:1)
@ https://feedback.azure.com上有一个公开建议 您可以实现上述链接中所述的模式:
- 将每个版本/更改存储为单独的项目
- 阅读变更摘要以合并/合并变更并在下游触发适当的操作。
因此,基本上,您需要另一个带有Change Feed侦听器的功能,该功能将每个文档存储在单独的“版本”集合中。之后,您可以添加CosmosDB绑定,该绑定从最新集合中获取最新版本。
答案 1 :(得分:0)
目前,尚无办法获得以前的版本或仅获得增量。
变更Feed包含操作和有效负载,而不是对先前状态的引用。