在 Mongoose 的 forEach 循环中添加属性

2023-11-23

假设我的 posts 数组中的每个帖子都有两个属性 name 和 number。所以它就像

var posts = [{name:"hey", number: 1}, {name:"foo", number:"2"}]

Javascript 允许我在 foreach 循环中更改这些属性,如下所示:

posts.forEach(function(post){
    post.name = "bar"
});

我的数组变成:

var posts = [{name:"bar", number: 1}, {name:"bar", number:"2"}]

但它不允许我添加新属性,例如:

posts.forEach(function(post){
    post.adress = "bar"
});

我的对象保持不变。有没有办法在 javascipt 的 foreach 循环中添加属性

edit:

这是在回调中使用 mongoose 发生的。

  Post.pagination(options, function(err, posts) {
    if (err) console.log(err)
    posts.forEach(function(post){
      post.votetype = 1;
    });
    console.log(posts);
    res.send({ posts : posts  })
  })

未添加此 votetype 属性后


问题是从 Mongoose 返回的数据是不可变的。 下面的代码未经测试,但应该会提示您如何使数据可变并修改它。

关键是调用toObject()在您想要修改的 Mongoose 文档对象上。

Post.pagination(options, function(err, posts) {
  if (err) console.log(err);

  var resultPosts = posts.map(function(post) {
    var tmpPost = post.toObject();

    // Add properties...
    tmpPost.votetype = 1;

    return tmpPost;
  });

  console.log(resultPosts);
  res.send({ posts : resultPosts  });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Mongoose 的 forEach 循环中添加属性 的相关文章