Node + Mongo:向集合中的数组添加logging
我正在写一个博客系统。 现在我正在处理post的评论。 以下是每个post的模式:
{ "topic": "Post Topic", "post": "<p>\r\n\tPost text</p>\r\n", "time_added": 1343167025, "author": "Ashley Brooks", "_id": { "$oid": "500f1a315759c73805000001" }
}
现在,我想为这个post添加评论。 我想存储评论的最佳方式是:
{ "topic": "Post Topic", "post": "<p>\r\n\tPost text</p>\r\n", "time_added": 1343167025, "author": "Ashley Brooks", "_id": { "$oid": "500f1a315759c73805000001" }, "comments" : [ { "author":"James Brown", "comment":"My awesome comment" }, { "author":"Jimmy White", "comment":"And this is my comment" } ] }
我已经阅读了Mongo的一些文档,但是我找不到添加新评论的正确方法。 这就是我现在正在做的事情:
exports.post = function(req, res) { if (req.currentUser) { db.collection("posts", function (err, collection) { var obj_id = BSON.ObjectID.createFromHexString(req.params.id); console.log(obj_id); collection.findAndModify( {_id: obj_id}, // query for a post {$push: { comments: [ {author: req.body.comment, name: "testname" } ] } }, function(err, object) { if (err){ console.warn(err.message); }else{ res.redirect('/'); } }); }); } else { res.redirect('/'); }
};
它返回我这样的错误:
exception: must specify remove or update
我做错了什么?
PS顺便说一句,我认为这将是很好的标记单独的评论与任何独特的身份证或像这样的smth。 我如何指定Mongo为每个添加注释添加一个obj_id参数? 提前致谢。
使用“更新”,它的工作原理:
collection.update( {_id: obj_id}, // query {$push: { comments: {comment: req.body.comment, name: "testname" } } },