我查看过其他一些SO帖子并找到了不同的方法来做到这一点,所以我想知道哪个是最优先的。我正在向学生讲这个,所以我想给他们最好的实践。
如果我有以下BlogPost
个对象(简体):
var BlogPostSchema = new mongoose.Schema({
body: String,
comments: [String]
});
我希望在此博客的评论数组中添加新评论,我至少可以想到3种方法来完成此任务:
1)将评论推送到Angular中的博客对象,并向PUT
端点提交/blogs/:blogID
请求,并使用新评论更新整个博客对象。
2)向POST
端点提交/blogs/:blogID/comments
请求,其中请求正文只是新评论,找到博客,将评论推送到vanilla js中的数组,并保存:< / p>
BlogPost.findById(req.params.blogID, function(err, blogPost) {
blogPost.comments.push(req.body);
blogPost.save(function(err) {
if (err) return res.status(500).send(err);
res.send(blogPost);
});
});
OR
3)使用新评论的请求正文将POST
提交到/blogs/:blogID/comments
端点,然后使用MongoDB的$push
或$addToSet
添加对数组的推荐评论:
BlogPost.findByIdAndUpdate(
req.params.blogID,
{$push: {comments: req.body}},
{safe: true, new: true},
function(err, blogPost) {
if (err) return res.status(500).send(err);
res.send(blogPost);
});
});
我确实找到了this stackoverflow post,其中回答者讨论了选项2与选项3,并且基本上说只要你能使用选项2,这对我来说似乎更简单。 (而且我通常会尽量避免阻止我使用钩子和其他猫鼬好东西的方法。)
你怎么看?有什么建议吗?答案 0 :(得分:1)
从应用的角度来看,第3点更好。我认为的原因是。
性能方面,他们都做同样的事情,所以可能没有太多或任何明显的差异。但是选项3更安全,更清洁。