让我说我的posts数组中的每个帖子都有两个属性名称和编号。它就像
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循环中添加属性编辑:
这是在回调中使用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属性之后
答案 0 :(得分:5)
问题是从Mongoose返回的数据是不可变的。 下面的代码未经测试,但应该提供一些关于如何使数据可变并修改它的提示。
关键是在要修改的Mongoose文档对象上调用toObject()
。
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 });
});