触发器如何在Cosmos DB Emulator中工作

时间:2019-06-20 12:59:06

标签: azure-cosmosdb

我无法理解Trigger在Cosmos DB Emulator中的工作方式。请解释一下它的用法。

1 个答案:

答案 0 :(得分:0)

首先,您需要知道cosmos db中的Triggerazure function cosmos db trigger不同。它不能自动执行。调用sdk方法时应特别定义,请参考官方文档中的示例。

创建触发器:

string triggerId = "trgPreValidateToDoItemTimestamp";
Trigger trigger = new Trigger
{
    Id =  triggerId,
    Body = File.ReadAllText($@"..\js\{triggerId}.js"),
    TriggerOperation = TriggerOperation.Create,
    TriggerType = TriggerType.Pre
};
Uri containerUri = UriFactory.CreateDocumentCollectionUri("myDatabase", "myContainer");
await client.CreateTriggerAsync(containerUri, trigger);

当然,您可以通过cosmos db门户或仿真器UI创建触发器:

enter image description here

然后,您需要定义使用对应的sdk方法时创建的触发器的名称。例如,您以Create创建了预触发和触发操作,然后可以使用以下代码将其激活:

Uri containerUri = UriFactory.CreateDocumentCollectionUri("myDatabase", "myContainer");
RequestOptions requestOptions = new RequestOptions { PreTriggerInclude = new List<string> { "<your trigger name>" } };
await client.CreateDocumentAsync(containerUri, newItem, requestOptions);