繁体   English   中英

修改猫鼬查询的结果

[英]Modifying the results of a Mongoose query

我正在使用MongooseAsync 进行ExpressJS上MDN教程,有一次我试图查询所有Books,然后将其映射到其他查询以查找每本​​书的BookInstances数量。 (例如,我想显示数据库中所有书籍的表格,然后列出我们有多少本书)

// Display list of all books.
exports.book_list = function(req, res) {
  Book.find({}, 'title author')
    .exec(function(err, list){
      if (err) {return next(err);}

      async.map(list, function(book, next){
        BookInstance.countDocuments({book: book.id}, function(err, count){
          // Try and add the bookinstance count to the book object
          // use next(null, book);
        });
      }, function(err, modified_list){
        res.send(modified_list);
      });
    });
};

但是,以下内容不会执行任何操作:

book.count = count
next(null, book);

也没有:

book.set("count", count");
next(null, book);

在两个示例中,该项目均保持不变。 但是,以下内容返回了我期望的结果:

var obj = {book: book, count: count};
next(null, obj);

猫鼬的文档描述了find()返回文档,但是我不知道它们为什么看起来是不可变的,或者文档实际上是什么。 有没有一种方法可以将count属性添加到原始返回的对象中而不将其包装在另一个对象中?

如果模型中未定义属性,则猫鼬不会直接允许您添加该属性。 但是,您可以使用document._doc更改为文档添加新属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM