可能重复:
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' }
答案 0 :(得分:11)
你必须告诉Mongoose将结果转换为适当的对象。在修改Feed对象之前,只需调用:
feed = feed.toObject();
然后您可以添加所需的所有其他属性。