Azure Cosmos DB文档更改触发器是否具有新旧文档?

时间:2019-08-30 11:53:28

标签: triggers azure-functions azure-cosmosdb

我在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 }

预先感谢

2 个答案:

答案 0 :(得分:1)

@ https://feedback.azure.com上有一个公开建议 您可以实现上述链接中所述的模式:

  
      
  1. 将每个版本/更改存储为单独的项目
  2.   
  3. 阅读变更摘要以合并/合并变更并在下游触发适当的操作。
  4.   

因此,基本上,您需要另一个带有Change Feed侦听器的功能,该功能将每个文档存储在单独的“版本”集合中。之后,您可以添加CosmosDB绑定,该绑定从最新集合中获取最新版本。

答案 1 :(得分:0)

目前,尚无办法获得以前的版本或仅获得增量。

变更Feed包含操作和有效负载,而不是对先前状态的引用。