3
documentdbにドキュメントを照会し、結果を呼び出し元に返す次のメソッドがあります。deferredの解決が期待通りに機能しない
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;
}
私はフェッチメソッドを呼び出すと、私はだから私はdocumentDbがデータを返すことを知っている次のような結果
Fetch return values - undefined - []
を参照してください。今私の条件に基づいて、fetchDeferred.resolveは約束を解決する必要があります。
次のようにこの関数は、私がルートを呼び出すとき
{data:[]}
を次のように
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});
});
};
は今、私は結果を取得する必要があります。しかし、成功の機能ではありませんGETルートハンドラから呼び出されます何が起こっているのでしょうか?
これで、getルートハンドラから関数を呼び出すと、コンソールログが表示されますが、成功関数が呼び出されていないことを確認してください。エラー機能が呼び出されていますか? – fikkatra
'toArray'メソッドとは何ですか?何回呼ばれているのですか? –
queryDocumentsはasync関数のように見えます。 ... – softwarenewbie7331