loggingMongoose创build对象的值时,值属性更改不会被反映
我使用forEach方法遍历对象中的项目。
function scrapeRssFeedData(rssFeeds, cb){ rssFeeds.forEach(function(rssFeed){ rssFeed.property = 'value'; console.log(rssFeed.property); console.log(rssFeed); }); }
为rssFeed.propertylogging的值正确地为“值”。
但是,当rssFeed对象本身被logging时,该属性不可见。
原始的rssFeeds对象是使用Mongoose模型构build的。
为什么在logging对象时不能看到属性? 我能做些什么来解决它?
更新:即使这个代码不起作用:
function scrapeRssFeedData(rssFeeds, cb){ rssFeeds[1]['property'] = 'value'; console.log(rssFeeds[1]); }
这个例子不起作用的事实使我相信,几乎可以肯定这是与由Mongoose构build的对象有关的。 我想用Mongoose来完成,不过在程序的这一点上,并且想要开始为这个对象添加值。
正如我越来越怀疑,这是由于它是一个Mongoose文档的实例,而不是一个正常的JavaScript对象。
我能在这里find解决scheme:
你如何将一个Mongoose文档变成一个普通的对象?
并将.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'}) } }