javascript - 记录 Mongoose 创建的对象的值时未反射(reflect)值属性更改

标签 javascript node.js mongoose

我正在使用 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/

相关文章:

node.js - 更改mongo数据库

node.js - --data-urlencode curl 到 Node.js 请求或 express 模块

node.js - 如何在 URL 中传递 MongoDB 集合内文档的 objectID?

javascript - Mongoose 从用户 ID 或基于 ip 查询

javascript - 对齐 Bootstrap 轮播图像

javascript - 检查网页上的文本框以获取特定字符串

javascript - 使 javascript 字符串 sql 友好

mongodb - 从 mongo 返回数据表的正确方法

javascript - 网络爬虫是否遵循 robots.txt 网址或标签

javascript - 如何处理 Node error 'Unhandled promise rejection' 以便该页面仍然加载?