服务总线主题到文档Db - 更新而不是替换

时间:2017-11-24 06:11:26

标签: node.js azure-cosmosdb azure-functions azure-servicebus-topics

https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-documentdb#input-sample-for-single-document

给出以下绑定:

{
  "name": "inputDocument",
  "type": "documentDB",
  "databaseName": "MyDatabase",
  "collectionName": "MyCollection",
  "id" : "{queueTrigger}",
  "connection": "MyAccount_COSMOSDB",     
  "direction": "in"
}

我正在使用azure函数,服务总线主题Trigger,文档db作为Output,我想使用documentDb作为输入,id类似于上面提到的。我正在使用nodejs。

上面的链接没有上面部分的描述,我认为上面的意思是,我们从azure documentdb获取一个文件,并且由于id是作为queueTrigger给出的,如果服务总线队列中有一条带有id1的消息,那么我们得到一个与documentdb中的id1相同的文档。

我的要求是我需要知道documentdb中是否有文档,其ID与服务总线主题(不是队列)相同,如何去做。

整个目标是更新documentdb中的记录,保留文档的某些早期属性,而不是使用来自服务总线主题的消息替换文档db中的现有文档。

对上述类似情况以及您如何解决的任何讨论提供任何帮助,即使它没有使用绑定。

更新:更多信息: " id" :" {queueTrigger}",不作为触发器用于服务总线。 我找不到" {queueTrigger}"的MS文档,所以尝试过" {serviceBusTrigger}" 但是" id" :" {serviceBusTrigger}"也没用。

我需要类似于" id" :" {queueTrigger}",将服务总线作为触发器,将documentdb作为输入。

1 个答案:

答案 0 :(得分:0)

这是诀窍的绑定:

{
  "bindings": [
    {
      "name": "myMsg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "topicName": "mytopic",
      "subscriptionName": "mysubscription",
      "connection": "myconnection",
      "accessRights": "Manage"
    },
    {
      "type": "documentDB",
      "name": "inputDocument",
      "databaseName": "testdb",
      "collectionName": "test",
      "connection": "mydocdb",
      "direction": "in",
      "id": "{myMsg}"
    }
  ],
  "disabled": false
}

然后该文档可供您的函数处理:

module.exports = function(context, myMsg) {
    context.log('Processing message', myMsg);
    context.log(context.bindings.inputDocument);
    context.done();
};

或者,如果您的消息是例如JSON,例如格式如下:

{ "docid": "31c5c592-94a3-4922-82e4-fcda8366280c" }

您还可以绑定到docid属性:

{
  "bindings": [
    {
      "name": "myMsg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "topicName": "mytopic",
      "subscriptionName": "mysubscription",
      "connection": "myconnection",
      "accessRights": "Manage"
    },
    {
      "type": "documentDB",
      "name": "inputDocument",
      "databaseName": "testdb",
      "collectionName": "test",
      "connection": "mydocdb",
      "direction": "in",
      "id": "{docid}"
    }
  ],
  "disabled": false
}

详细了解Binding Expressions