把一些从CouchDB的文件放到数组(Node.JS)
我尝试获取ID为1,100,1000的3个文档。但是,node.js是asynchronous的,结果中的数组对象是空的。 如何把文件放入数组?
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返回{}。
所以这是一个经典的asynchronous代码问题。 你的代码可以像这样重写:
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的async.js库 (特别是async.parallel)。
- 我怎样才能发送tcpdump输出到数据库?
- 有没有人在node-js中find或开发了一个好的couchdbpipe理器?
- 使用nano插入二进制附件到CouchDB
- CouchDB循环独特`_id`和Console.log通过JavaScript
- 用Node.js连接到Cloudant CouchDB?
- 通过摇篮将parameter passing给couchdb中的视图
- MongoDb vs CouchDb:为地理位置远程客户端写入速度
- 您将如何在NoSql数据库中对customer> order> ordertem> product进行build模?
- 我可以在Amazon EC2的一个实例上运行多个应用程序吗?