node.js - 将一些文档从 CouchDB 放入数组 (Node.JS)

标签 node.js couchdb

我尝试获取 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/

相关文章:

javascript - node.js 可以用作在 Web 应用程序中运行任意服务器端 Javascript 的框架吗?

javascript - CouchDB 查询问题

javascript - bash 脚本和 JavaScript 之间的 JSON 日期时间

ssl - 为 Hyperledger Fabric couchdb 启用 SSL

node.js - 如何在 Meteor 中执行服务器端文件处理操作?

node.js - 如何在 meteor 上创建自动增量字段?

node.js - MongoDB:如果字段值小于10,则将字段值设置为10,否则加1

Javascript/Node.js 数组内存管理

php - couch 和 mysql 之间自动同步数据

couchdb - 表示 couchDB 中的多对多关系