我尝试获取 3 个 ID 为:1、100、1000 的文档。但是 Node.js 是异步的,结果中的数组 objects 为空。如何将文档放入数组?
var objects = {};
var objectsID = [1, 100, 1000];
objectsID.forEach( function( elem ){
objectsDB.get( elem, function( err, object ){
objects[elem] = object;
})
});
console.log(objects);
console.log 返回 {}。
最佳答案
所以这是一个经典的异步代码问题。您的代码可以这样重写:
var objects = {};
var objectsID = [1, 100, 1000];
var finalize = function( ) {
console.log(objects);
};
objectsID.forEach( function( elem ){
objectsDB.get( elem, function( err, object ){
objects[elem] = object;
// remove ID from the list of IDs
var idx = objectsID.indexOf(elem);
if (idx!=-1) {
objectsID.splice(idx, 1);
}
// check if it is time to finalize
if (!objectsID.length) {
finalize();
}
})
});
您可能想看看Caolan's async.js library以及(特别是 async.parallel )。
关于node.js - 将一些文档从 CouchDB 放入数组 (Node.JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14872670/