给出以下绑定:
{
"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作为输入。
答案 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
}