我们有一个以 bulkImport 为模型的存储过程。 DocumentDB 示例代码中的 sproc。这个 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'
};
我们期望看到触发器被调用。但是,触发器没有被触发。我们尝试了各种修改来尝试查看触发器被触发,但仍然没有:将批量 sproc 和触发器减少到绝对最小值,将 triggerOperation 更改为“全部”。
在 source对于服务器端包装器,以及在上面链接的 Collection 文档中,服务器端代码似乎没有查看任何
*Trigger*
选项对象的字段,例如preTriggerInclude
就像我们的情况一样。是否可以通过调用
createDocument
执行预创建触发器?在存储过程中,或者对 calling a stored procedure from another stored procedure 进行限制适用于任何服务器端代码?
最佳答案
无法从服务器端 SDK 调用触发器(例如,从另一个触发器或 sproc 内部)。
关于stored-procedures - 来自 DocumentDB 存储过程的触发触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30853186/