Node.js 中的 Azure DocumentDB 存储过程执行现有
Azure DocumentDB Stored Procedure in Node.js excute existing
为此一直在兜圈子。我正在尝试使用节点 js documentdb 库执行现有的存储过程。
var sproc = self.client.queryStoredProcedures(collection._self, "select * from root r WHERE r.id = 'helloWorld'");
self.client.executeStoredProcedure(sproc._self, function (err, res) {
if(err){
console.log(err);
}else{
console.log(res);`
}
});
不完全确定 queryStoredProcedures(似乎不是这个的异步版本)是检索存储过程的 uri 的正确方法,我还没有设法让它工作。我也试图避免过多的数据库往返,但从我收集的信息来看,我要么对存储过程的 uri 进行硬编码,要么必须至少发出两个请求才能执行存储过程。
queryStoredProcedures(以及所有查询和读取函数)return QueryIterator 而不是实际结果。您在 returned QueryIterator 上调用的方法是异步的。所以,按照你的例子的方法(减去错误处理),你会这样做:
var queryIterator = self.client.queryStoredProcedures(collection._self, "select * from root r WHERE r.id = 'helloWorld'");
queryIterator.toArray(function(err, result) {
var sproc = result[0];
self.client.executeStoredProcedure(sproc._self, function (err, res) {
console.log(res);`
});
});
但是,由于引入了基于 id 的路由,您可以像这样简写上面的内容:
var sprocLink = "dbs/myDatabase/colls/myCollection/sprocs/helloWorld";
self.client.executeStoredProcedure(sprocLink, function (err, res) {
console.log(res);`
});
为此一直在兜圈子。我正在尝试使用节点 js documentdb 库执行现有的存储过程。
var sproc = self.client.queryStoredProcedures(collection._self, "select * from root r WHERE r.id = 'helloWorld'");
self.client.executeStoredProcedure(sproc._self, function (err, res) {
if(err){
console.log(err);
}else{
console.log(res);`
}
});
不完全确定 queryStoredProcedures(似乎不是这个的异步版本)是检索存储过程的 uri 的正确方法,我还没有设法让它工作。我也试图避免过多的数据库往返,但从我收集的信息来看,我要么对存储过程的 uri 进行硬编码,要么必须至少发出两个请求才能执行存储过程。
queryStoredProcedures(以及所有查询和读取函数)return QueryIterator 而不是实际结果。您在 returned QueryIterator 上调用的方法是异步的。所以,按照你的例子的方法(减去错误处理),你会这样做:
var queryIterator = self.client.queryStoredProcedures(collection._self, "select * from root r WHERE r.id = 'helloWorld'");
queryIterator.toArray(function(err, result) {
var sproc = result[0];
self.client.executeStoredProcedure(sproc._self, function (err, res) {
console.log(res);`
});
});
但是,由于引入了基于 id 的路由,您可以像这样简写上面的内容:
var sprocLink = "dbs/myDatabase/colls/myCollection/sprocs/helloWorld";
self.client.executeStoredProcedure(sprocLink, function (err, res) {
console.log(res);`
});