我无法理解Trigger在Cosmos DB Emulator中的工作方式。请解释一下它的用法。
答案 0 :(得分:0)
首先,您需要知道cosmos db中的Trigger与azure 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创建触发器:
然后,您需要定义使用对应的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);