如何从 JS 代码或存储过程在 DocumentDB 中执行预触发器
How to execute a pre-trigger in DocumentDB from a JS code or Stored Procedure
我在Azure DocumentDB中有一个存储过程,可以批量插入文档。如何在 SP 中执行触发器?
存储过程:
function InsertBulk(obj) {
var collection = getContext().getCollection();
var collectionLink = collection.getSelfLink();
var count = 0;
if (!obj) throw new Error("The array is undefined or null.");
var docsLength = obj.docs.length;
if (docsLength == 0) {
getContext().getResponse().setBody(0);
}
tryCreate(obj.docs[count], callback);
function tryCreate(doc, callback) {
var isAccepted = collection.createDocument(collectionLink, doc, callback);
if (!isAccepted) getContext().getResponse().setBody(count);
}
function callback(err, doc, options) {
if (err) throw err;
count++;
if (count >= docsLength) {
getContext().getResponse().setBody(count);
} else {
tryCreate(obj.docs[count], callback);
}
}}
据我所知,@Dev的回答不正确,说 DocumentDB 中的触发器隐式触发。在每个 SQL 实现中,它们都会这样做,但在 DocumentDB 中却没有。触发器必须在 DocumentDB 中显式指定,但不允许从 sproc 中指定它们。触发器仅在客户端库中受支持,即使这样,您也必须为希望它们触发的每个操作显式指定触发器。
从好的方面来说,您可以将触发器逻辑移动到 sproc 中。
不能
从存储过程调用触发器。
触发器在对表执行任何操作(如插入、更新、删除)时隐式触发。
假设您编写了一个用于更新表记录的过程。当您的过程将执行时,您创建的触发器也将触发,因为它会在表上执行任何操作时自动触发。
祝你好运,希望这有帮助。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何做到这一点,使代码在不传递条件后执行函数
- 如何在执行此特定onclick事件时执行JavaScript函数
- 如何在从浏览缓存加载页面时执行javascript
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- Jquery:代码在rails中的页面加载时未执行
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- JavaScript动画从不执行
- 为什么onsubmit函数似乎没有执行
- 如何从 JS 代码或存储过程在 DocumentDB 中执行预触发器