DocumentDB 为什么无法从 Azure 门户触发触发器?
DocumentDB Why triggers can not be triggered from Azure portal?
我预先触发了替换操作。我意识到,与 SQL 服务器触发器不同,当您在 Azure 门户中更新文档时,DocumentDB 触发器不会触发。我是否遗漏了门户中的任何设置?或者这就是 DocumentDB 触发器的工作方式?只能通过应用程序代码触发?
谢谢!
您的理解是正确的。没有技术阻止程序允许从门户中使用此功能,只是目前缺少它。
这肯定是一个有效的请求@https://feedback.azure.com/forums/263030-documentdb
DocumentDb 数据库触发器不会通过 DML 自动引发,如创建和删除操作,这在其他数据库中很常见。
也就是说,必须为您在应用程序代码中进行的每个数据库操作指定触发器。另外,触发器应该是同一类型,即一次插入操作只能采用创建触发器类型,不能采用替换类型。
因为,我有 azure 函数 documentdb 输出绑定,我不自己做 DML 操作。在浪费了很多时间调试之后,继续在数据库集合下创建一个存储过程,然后使用下面的代码通过 Azure 函数代码调用它。
这非常有效:
// call stored procedure, nodejs, azure
'use strict';
var DocumentClient = require('documentdb').DocumentClient;
var client = new DocumentClient(process.env.DB_HOST, {masterKey: process.env.DB_M_KEY});
var sprocLink =
'dbs/' + sprocDbName1 +
'/colls/' + sprocCollName1 +
'/sprocs/' + sprocName1;
var sprocParams = {
key1: "val1",
key2: "val2"
};
client
.executeStoredProcedure(
sprocLink,
sprocParams1,
function (err, results) {
if (err) {
context.log.error('err');
context.log.error(err);
return;
}
context.log.verbose('results');
context.log.verbose(results);
return;
});
注意:为 DB_HOST(url 以 :443/ 结尾)、DB_M_KEY、sprocDbName1(您的数据库名称)、sprocCollName1(您的集合名称、sprocName1(您的存储过程名称)
在执行上述操作之前,应在 DocumentDb 数据库集合中创建一个存储过程 (sproc)。
希望对您有所帮助。
我预先触发了替换操作。我意识到,与 SQL 服务器触发器不同,当您在 Azure 门户中更新文档时,DocumentDB 触发器不会触发。我是否遗漏了门户中的任何设置?或者这就是 DocumentDB 触发器的工作方式?只能通过应用程序代码触发?
谢谢!
您的理解是正确的。没有技术阻止程序允许从门户中使用此功能,只是目前缺少它。
这肯定是一个有效的请求@https://feedback.azure.com/forums/263030-documentdb
DocumentDb 数据库触发器不会通过 DML 自动引发,如创建和删除操作,这在其他数据库中很常见。
也就是说,必须为您在应用程序代码中进行的每个数据库操作指定触发器。另外,触发器应该是同一类型,即一次插入操作只能采用创建触发器类型,不能采用替换类型。
因为,我有 azure 函数 documentdb 输出绑定,我不自己做 DML 操作。在浪费了很多时间调试之后,继续在数据库集合下创建一个存储过程,然后使用下面的代码通过 Azure 函数代码调用它。
这非常有效:
// call stored procedure, nodejs, azure
'use strict';
var DocumentClient = require('documentdb').DocumentClient;
var client = new DocumentClient(process.env.DB_HOST, {masterKey: process.env.DB_M_KEY});
var sprocLink =
'dbs/' + sprocDbName1 +
'/colls/' + sprocCollName1 +
'/sprocs/' + sprocName1;
var sprocParams = {
key1: "val1",
key2: "val2"
};
client
.executeStoredProcedure(
sprocLink,
sprocParams1,
function (err, results) {
if (err) {
context.log.error('err');
context.log.error(err);
return;
}
context.log.verbose('results');
context.log.verbose(results);
return;
});
注意:为 DB_HOST(url 以 :443/ 结尾)、DB_M_KEY、sprocDbName1(您的数据库名称)、sprocCollName1(您的集合名称、sprocName1(您的存储过程名称)
在执行上述操作之前,应在 DocumentDb 数据库集合中创建一个存储过程 (sproc)。
希望对您有所帮助。