DocumentDB存储过程

时间:2015-06-15 19:11:32

标签: stored-procedures triggers azure-cosmosdb

我们有一个存储过程,它是在DocumentDB示例代码中的bulkImport 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的{​​{1}}对象中。

createDocument

我们希望看到触发器被调用。但是,触发器未被触发。我们尝试了各种修改以试图看到触发器被触发,但它仍然没有:将大量的sproc和触发器削减到绝对最小值,将triggerOperation更改为“All”。

在服务器端包装器的source和上面链接的Collection文档中,似乎服务器端代码没有查看选项的任何var options = { disableAutomaticIdGeneration: false, preTriggerInclude: 'triggerNameRedacted' }; 字段对象,例如*Trigger*就像我们的情况一样。

是否可以在存储过程中调用preTriggerInclude执行预创建触发器,或者对calling a stored procedure from another stored procedure的限制是否适用于任何服务器端代码?

1 个答案:

答案 0 :(得分:6)

无法从服务器端SDK调用触发器(例如,从另一个触发器或sproc内部调用)。