我怎样才能使用Bluebird将Node的mongodb模块用于游标和/或集合'toArray()?

时间:2014-08-13 23:00:03

标签: javascript node.js promise node-mongodb-native bluebird

相关套餐:

"dependencies": {
  "mongodb":    "1.4.x",
  "bluebird":   "2.3.x"
}

我看了看:

我被困findAsync({})

喜欢一个光标,但我很少见到toArray()

我也可能做错了。

MongoClient.connectAsync('mongodb://127.0.0.1:27017/sr')
  .then(function(_db) {
    db = _db;
    return db.collectionAsync('posts');
  })
  .then(function(colPosts) {
    return colPosts.findAsync({});
  })
  .then ( A MIRACLE OCCURS )
  .catch(function(e) {
    console.log(e);
  })
  .finally(function() {
    if (db) db.close();
  });

奇迹出现的地方我想迭代光标结果或者数组化集合。我在弄清楚如何解决这个问题时遇到了问题。

1 个答案:

答案 0 :(得分:1)

据我了解,.findAsync返回游标的承诺。如果你想将数据拉入内存(与.toArray一样),我认为你正在寻找的是:

MongoClient.connectAsync('mongodb://127.0.0.1:27017/sr')
  .then(function(_db) {
    db = _db;

    return db
      .collection('posts')
      .find({})
      .limit(limit)
      .sort(sort)
      .toArrayAsync();
  })
  .then(function(posts) {
    console.log('posts', posts);
  })
  .catch(function(e) {
    console.log(e);
  });