Azure CosmosDB 触发器根据另一个集合中的值更新一个集合
Azure CosmosDB Trigger to update a Collection based on Value in another Collection
我必须根据另一个 cosmosDB 集合(假设为 collection-2)中列的值更新 cosmosDB 集合(假设为 collection-1)。 collection-1 应使用来自其他集合(如 collection-3 和 collection-4)的值进行更新。我曾尝试在 Collection-2 中编写 post 触发器,但在触发器中编写函数时卡住了。
请建议是否可以使用 CosmosDB 触发器或建议是否有任何替代方法来实现此目的。
我为 cosmos DB 创建了一个新的触发器函数。
据我所知,您只能在每个 Azure Function CosmosDB Trigger.
中监视一个 cosmos db 集合的更新
也就是说,如果Collection-1的column updates是由Collection 2,3,4的updates决定的,你需要为此创建3个trigger。
在每个触发器中,请按照此document to configure the collection information and use Cosmos DB SDK替换特定文档。
更新答案:
完全同意@Matias Quaranta评论中的解释,你混淆了你提到的两种触发器here.As,当然,需要采用Azure Function Trigger。 Cosmos DB 触发器无法监视您收集的任何更新,它是被动触发的。
例如:
如果你想在将文档插入cosmos db之前添加一列,你可以在使用insert document cosmos db sdk时设置触发器名称来激活它。这是cosmos db下的触发器。
如果你想监控你的cosmos db集合的更新,然后做一些业务,需要采用Azure Function Trigger。
我对集合 >>> 触发器和 Azure 函数 Cosmos DB 触发器感到困惑。
我的上述问题的解决方案是创建一个 Azure 函数来触发 cosmos DB。
创建资源 >>> 计算 >>> 函数应用。
要添加输入和输出,请从您创建的 Function App >>> Trigger 转到 Integrate 选项。
Refer the link for function binding:
此函数将触发单个 cosmosDB 集合中的数据更新。
我们可以添加 n 个集合作为输入和一个集合作为输出。
下面是 function.json 文件,它将在定义绑定时自动创建:
{
"bindings": [
{
"type": "cosmosDBTrigger",
"name": "documents",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "cosmosdb_DOCUMENTDB",
"databaseName": "connectivityDB",
"collectionName": "tblEvent",
"createLeaseCollectionIfNotExists": true
},
{
"type": "cosmosDB",
"name": "outputDocument",
"databaseName": "connectivityDB",
"collectionName": "tblNewEvent",
"createIfNotExists": true,
"connectionStringSetting": "cosmosdb_DOCUMENTDB",
"partitionKey": "/id",
"direction": "out"
}
]
}
下面是创建的 index.js 文件:
module.exports = function(context, input) {
var documents = context.bindings.documents;
var output = [];
if(!!input && input.length > 0){
//write your code here
}
context.bindings.outputDocument = output;
context.done();
}
我必须根据另一个 cosmosDB 集合(假设为 collection-2)中列的值更新 cosmosDB 集合(假设为 collection-1)。 collection-1 应使用来自其他集合(如 collection-3 和 collection-4)的值进行更新。我曾尝试在 Collection-2 中编写 post 触发器,但在触发器中编写函数时卡住了。
请建议是否可以使用 CosmosDB 触发器或建议是否有任何替代方法来实现此目的。
我为 cosmos DB 创建了一个新的触发器函数。
据我所知,您只能在每个 Azure Function CosmosDB Trigger.
中监视一个 cosmos db 集合的更新也就是说,如果Collection-1的column updates是由Collection 2,3,4的updates决定的,你需要为此创建3个trigger。
在每个触发器中,请按照此document to configure the collection information and use Cosmos DB SDK替换特定文档。
更新答案:
完全同意@Matias Quaranta评论中的解释,你混淆了你提到的两种触发器here.As,当然,需要采用Azure Function Trigger。 Cosmos DB 触发器无法监视您收集的任何更新,它是被动触发的。
例如:
如果你想在将文档插入cosmos db之前添加一列,你可以在使用insert document cosmos db sdk时设置触发器名称来激活它。这是cosmos db下的触发器。
如果你想监控你的cosmos db集合的更新,然后做一些业务,需要采用Azure Function Trigger。
我对集合 >>> 触发器和 Azure 函数 Cosmos DB 触发器感到困惑。 我的上述问题的解决方案是创建一个 Azure 函数来触发 cosmos DB。
创建资源 >>> 计算 >>> 函数应用。
要添加输入和输出,请从您创建的 Function App >>> Trigger 转到 Integrate 选项。
Refer the link for function binding:
此函数将触发单个 cosmosDB 集合中的数据更新。 我们可以添加 n 个集合作为输入和一个集合作为输出。
下面是 function.json 文件,它将在定义绑定时自动创建:
{
"bindings": [
{
"type": "cosmosDBTrigger",
"name": "documents",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "cosmosdb_DOCUMENTDB",
"databaseName": "connectivityDB",
"collectionName": "tblEvent",
"createLeaseCollectionIfNotExists": true
},
{
"type": "cosmosDB",
"name": "outputDocument",
"databaseName": "connectivityDB",
"collectionName": "tblNewEvent",
"createIfNotExists": true,
"connectionStringSetting": "cosmosdb_DOCUMENTDB",
"partitionKey": "/id",
"direction": "out"
}
]
}
下面是创建的 index.js 文件:
module.exports = function(context, input) {
var documents = context.bindings.documents;
var output = [];
if(!!input && input.length > 0){
//write your code here
}
context.bindings.outputDocument = output;
context.done();
}