【发布时间】:2015-06-15 19:11:31
【问题描述】:
我们有一个以 DocumentDB 示例代码中的 bulkImport sproc 为模型的存储过程。这个存储过程接受一个文档数组,做一些事情,最后调用 createDocument,documentation 说它是异步的。
现在我们已经为 Create 编写了一个预触发器,它会检查一些字段,并可以选择将一些附加字段添加到请求的某些文档中。
{
"id":"triggerNameRedacted",
"triggerType": "Pre",
"triggerOperation": "Create",
"body": "function()
{
var context = getContext();
var request = context.getRequest();
var documentToCreate = request.getBody();
documentToCreate.msg = 'got to here';
request.setBody(documentToCreate);
}"
}
我们将它附加到options 对象,我们将在我们的存储过程中传递给createDocument。
var options = {
disableAutomaticIdGeneration: false,
preTriggerInclude: 'triggerNameRedacted'
};
我们希望看到触发器被调用。但是,触发器没有被触发。我们尝试了各种修改来尝试查看触发器被触发,但仍然没有:将批量存储过程和触发器减少到绝对最小值,将 triggerOperation 更改为“All”。
在服务器端包装器的 source 和上面链接的 Collection 文档中,服务器端代码似乎没有查看选项对象的任何 *Trigger* 字段,例如preTriggerInclude 在我们的例子中。
是否可以通过在存储过程中调用 createDocument 来执行预创建触发器,或者对 calling a stored procedure from another stored procedure 的限制是否适用于任何服务器端代码?
【问题讨论】:
标签: stored-procedures triggers azure-cosmosdb