我正在使用 forEach 方法遍历对象中的项目。
function scrapeRssFeedData(rssFeeds, cb){
rssFeeds.forEach(function(rssFeed){
rssFeed.property = 'value';
console.log(rssFeed.property);
console.log(rssFeed);
});
}
为 rssFeed.property 记录的值正确地是“值”。
但是,当 rssFeed 对象本身被记录时,该属性不可见。
原始的 rssFeeds 对象是使用 Mongoose 模型构建的。
为什么在记录对象时看不到属性?我该怎么做才能修复它?
更新:即使这段代码也不起作用:
function scrapeRssFeedData(rssFeeds, cb){
rssFeeds[1]['property'] = 'value';
console.log(rssFeeds[1]);
}
这个例子不起作用的事实让我相信几乎可以肯定它与 Mongoose 构建的对象有关。尽管在程序的这一点上,我想完成 Mongoose 的使用,并想开始向该对象添加值。
最佳答案
我开始怀疑,这是因为它是 Mongoose 文档的一个实例,而不是普通的 Javascript 对象。
我能够在这里找到解决方案:
How do you turn a Mongoose document into a plain object?
并将 .lean() 添加到查询链中,即:
function getRssFeeds(status, cb){
if(status == 'on'){
RSSFeed
.find({})
.populate('endpoints')
.lean() // <-- Needed to be added
.exec(function (err, feeds) {
cb(null, feeds);
});
}
else if(status == 'off'){
cb({'status' : 'functionality', 'message': 'app is turned off'})
}
}
关于javascript - 记录 Mongoose 创建的对象的值时未反射(reflect)值属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30769216/