node.js - 如何使用 Mongoose Promise - mongo

谁能给我一个关于如何在 Mongoose 中使用 Promise 的例子。这是我所拥有的,但它没有按预期工作:

app.use(function (req, res, next) {
  res.local('myStuff', myLib.process(req.path, something));
  console.log(res.local('myStuff'));
  next();
});

然后在 myLib 中,我会有这样的东西:

exports.process = function ( r, callback ) {
  var promise = new mongoose.Promise;
  if(callback) promise.addBack(callback);

  Content.find( {route : r }, function (err, docs) {
     promise.resolve.bind(promise)(err, docs);

  });

  return promise;

};

在某些时候,我希望我的数据会出现,但我如何才能访问或获取它?

最佳答案

在当前版本的 Mongoose 中,exec() 方法返回一个 Promise,因此可以执行以下操作:

exports.process = function(r) {
    return Content.find({route: r}).exec();
}

然后,当你想获取数据时,你应该让它异步:

app.use(function(req, res, next) {
     res.local('myStuff', myLib.process(req.path));
     res.local('myStuff')
         .then(function(doc) {  // <- this is the Promise interface.
             console.log(doc);
             next();
         }, function(err) {
             // handle error here.
         });
});

有关 Promise 的更多信息,我最近阅读了一篇精彩的文章: http://spion.github.io/posts/why-i-am-switching-to-promises.html

关于node.js - 如何使用 Mongoose Promise - mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022099/

相关文章:

mongodb - 运行 updateOne 时出现错误 : the update operatio

ruby - 如何在控制台中禁用 MongoDB 日志消息?

mongodb - 如何在 Mongo 中进行 "NOT IN"查询?

python - 使用 Pymongo 获取集合的所有文档

mongodb - 使用聚合框架使用 MongoDB 进行组计数

mongodb - sudo service mongodb restart 在 ubuntu 14

mongodb - Mongo "prealloc"文件占用空间

python - 如何将 pymongo.cursor.Cursor 转换为字典?

node.js - 什么是Procfile?和 Web 和 Worker

Mongodb - 运行 "mongo"和 "mongod"数据库之间的区别