繁体   English   中英

Node.js中的Azure DocumentDB存储过程会排除现有文件

[英]Azure DocumentDB Stored Procedure in Node.js excute existing

我一直在绕这个圈。 我正在尝试使用node 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(以及所有查询和读取函数)返回QueryIterator而不是实际结果。 您在返回的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);`
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM