修改mongoose对象文字结果不起作用

时间:2012-02-10 10:58:03

标签: javascript node.js mongoose

  

可能重复:
  Why can’t you modify the data returned by a Mongoose Query (ex: findById)

首先,我正在对mongoDB进行查询,得到所有正确的结果,但只有对对象文字的小修改不起作用。我想做的是为评论添加新字段。我尝试使用DBref方法,但它不起作用,所以我现在进行2次查询。

var query = Rss.findOne({ _id: itemId});
query.exec(function(err, feed) {
  if (!err && feed.comments) {
    console.log(feed.comments.length);
    for (var index in feed.comments) {
      var author = feed.comments[index].author;
      if (author !== undefined) {
        User.findById(author, function(err, user) {

          /**Problem is here **/
          feed.comments[index].name = 'Some random field';
          console.log('Added new field' + util.inspect(feed));

        });
      }

    }
  }
});

此外,响应是没有缺少的.name字段。

Added new field{ _id: 4f34f343c7b0434217000012,
  original_link: 'http://com',
  publish_date: Fri, 10 Feb 2012 10:36:00 GMT,
  summary: 'some text',
  title: 'title exampel',
  comments: 
   [ { body: 'well',
       author: 4f30265e6f60dc061d000002,
       _id: 4f34f3b6f96c58541700000f,
       create_date: Fri, 10 Feb 2012 10:38:46 GMT } ],
  create_date: Fri, 10 Feb 2012 10:36:51 GMT }

//编辑更多信息

好吧,我还没有找到答案,但是一些控制台.log(feed.comments [index])如何返回对函数的引用。也许对mongoosejs有更多经验的人可以解释在这种情况下会有什么解决办法。

{ [Function] author: 'Some random field' }

1 个答案:

答案 0 :(得分:11)

你必须告诉Mongoose将结果转换为适当的对象。在修改Feed对象之前,只需调用:

feed = feed.toObject();

然后您可以添加所需的所有其他属性。

相关问题