【发布时间】:2017-11-28 07:28:22
【问题描述】:
我尝试在 Azure 门户中使用脚本资源管理器在 CosmosDB 中实现删除预触发器(触发器类型为“Pre”,触发器操作为“Delete”)。我想做的是通过使用已删除的文档并将其“pastDue”属性更改为true来创建一个新文档。从我的收藏中删除文档后,我看不到任何更改。
谁能告诉我我做错了什么?如何查看触发器是否成功执行?
function markReminderAsPastDue() {
var collection = getContext().getCollection();
var request = getContext().getRequest();
var docToCreate = request.getBody();
docToCreate["pastDue"] = true;
collection.createDocument(collection.getSelfLink(),
docToCreate,
function (err, documentCreated) {
if (err) throw new Error('Error' + err.message);
});
}
这是我用来从我的数据库处理程序类中的任何集合中删除任何文档的函数:
removeItem (item, partitionKey, callback)
{
var options = {
partitionKey: [ partitionKey ? partitionKey: item.email]
};
this.client.deleteDocument(item._self, options,
(err, doc) => {
if (err)
{
LogUtils.error("DBHandler.removeItem "+err.body);
callback(err, null);
}
else
{
callback(null, "success remove Item");
}
});
}
【问题讨论】:
-
删除文档时是否在请求选项中指定 preTriggersInclude?触发器不是自动调用的,需要在每个需要触发器的请求中明确指定。还要确保检查 collection.createDocument 的返回值,如下所示: var isAccepted = collection.createDocument(...); if (!isAccepted) throw new Error("not accepted");
标签: javascript azure azure-cosmosdb