mongodb - 如何从 find 方法返回 Mongoose 结果?

我能找到的所有用于渲染带有 Mongoose 结果的页面的东西都说要这样做:

users.find({}, function(err, docs){
    res.render('profile/profile', {
        users:     docs
    });
});

我怎样才能从查询中返回结果,更像这样?

var a_users = users.find({}); //non-working example

这样我就可以在页面上发布多个结果?

喜欢:

/* non working example */
var a_users    = users.find({});
var a_articles = articles.find({});

res.render('profile/profile', {
      users:    a_users
    , articles: a_articles
});

这个可以吗?

最佳答案

您正在尝试强制使用同步范式。就是行不通。 node.js 在大多数情况下是单线程的——当 io 完成时,会产生执行上下文。信令通过回调进行管理。这意味着您要么拥有嵌套回调、命名函数或流控制库,以使事情看起来更漂亮。

https://github.com/caolan/async#parallel

async.parallel([
   function(cb){
      users.find({}, cb);
   },
   function(cb){
      articles.find({}, cb);
   }
], function(results){
   // results contains both users and articles
});

https://stackoverflow.com/questions/6180896/

相关文章:

python - 在 Meteor 运行时,如何从另一个客户端访问 Meteor 的 MongoDB

performance - MongoDB 'count()' 非常慢。我们如何改进/解决它?

mongodb - Mongoose:深人口(填充人口密集的领域)

mongodb - 大型项目的 NodeJS vs Play 框架

mongodb - 仅返回嵌套数组中匹配的子文档元素

mongodb - 如何使用 docker-compose 为 mongo 数据库播种?

mongodb - 查询 MongoDB 的 IDE?

mongodb - 在 mongodb 中使用 findOne 获取具有最大 id 的元素

mongodb - meteor :如何备份我的 mongo 数据库

mongodb - 将 MongoDB 集合的子集保存到另一个集合