3
我有以下方法查询文档的documentdb并将结果返回给调用者。解决延期无法按预期方式工作
fetch: function(query) {
var fetchDeferred = q.defer();
client.queryDocuments(collectionLink, query).toArray(function(err, docs) {
console.log("Fetch return values - " + JSON.stringify(err) + " - " + JSON.stringify(docs));
if (err) {
fetchDeferred.reject(err);
} else {
fetchDeferred.resolve(docs);
}
});
return fetchDeferred.promise;
}
当我致电获取方法,我看到以下结果
Fetch return values - undefined - []
所以我知道documentDb返回数据。现在基于我的条件,fetchDeferred.resolve应该解决承诺。
这个功能是从一个get路由处理如下调用
exports.get = function(request, response) {
var userId = '100';
var querySpec = {
query: 'SELECT * FROM root r WHERE r.id = \'user_\' + @id',
parameters: [{
name: '@id',
value: userId
}]
};
docdb.fetch(querySpec).then(function(result){
response.send(statusCodes.OK, {data: result})
}, function(error){
response.send(statusCodes.OK, {data: error});
});
};
现在,当我打电话的路线,我应该得到的结果如下
{data:[]}
但成功的功能是不打电话:(任何想法为什么可能会发生?
所以可以确定的是:当您从get路由处理函数调用函数时,您会看到控制台日志,但成功函数没有被调用?错误函数是否被调用? – fikkatra
什么是'toArray'方法?它被称为多少次? –
queryDocuments看起来像异步函数。你可能想在检查错误之后再调用toArray ... – softwarenewbie7331