【发布时间】:2015-05-09 03:15:02
【问题描述】:
我有一个这样的 MongoDB 对象:
[
{ poster_ip: '127.0.0.1',
post_body: 'example',
_id: 54fc1f7808bac08f6d25f24b,
__v: 0 },
{ poster_ip: '127.0.0.1',
post_body: 'example',
_id: 54fc1f7808bac08f6d25f24a,
__v: 0 }
]
如何向每个嵌套数组添加一个额外的元素,这样它会是这样的:
[
{ poster_ip: '127.0.0.1',
post_body: 'example',
_id: 54fc1f7808bac08f6d25f24a,
__v: 0,
newName: NewValue },
{ poster_ip: '127.0.0.1',
post_body: 'example',
_id: 54fc1f7808bac08f6d25f24b,
__v: 0,
newName: NewValue },
]
我试过了,但没用:
for(var i=0; i<JSONobject.length; i++){
JSONobject[i].newName= NewValue;
}
我正在使用 node.js,对象是我从 mongodb 查询中得到的结果。
函数如下:
exports.Posts = function(UserID, PostID, callback) {
Post.find( { post: PostID } , function(err, results) {
var r = results.toObject(); //here i get error 'has no method toObject'
for (var i=0; i<r.length; i++){
r[i].newName = "NewValue";
}
console.log(r);
//i don't see any changes here with console.log
return callback(null, results);
});
}
编辑:
经过一番研究,我发现返回的 Mongoose 文档不是 JSON 对象,所以我现在尝试将其转换为对象。
【问题讨论】:
-
基于
JSONobject.length迭代并改变results[i]? -
存在严重的语义问题,使您难以关注。
JSONobject是 Javascript 数组吗?是您在问题中首先写的文字吗?那么results是什么? -
您发布的
for循环看起来不错。是什么让您认为它不起作用? -
@Pointy 它不起作用,因为我在循环后检查了结果。
-
@dystroy 哦,抱歉,之前的“结果”是 JSON 对象。我相信这是一个 javascript 数组,如果我错了,请纠正我。
标签: javascript json node.js mongodb object