[英]Pushing new item to a mongoDB document array
我瀏覽了許多其他的SO帖子,並找到了不同的方法來執行此操作,所以我想知道哪個是最優選的。 我正在教學生,所以我想給他們最佳實踐。
如果我有以下BlogPost
對象(簡體):
var BlogPostSchema = new mongoose.Schema({
body: String,
comments: [String]
});
並且我想在此博客的評論數組中添加新評論,我可以想到至少三種主要方法來實現:
1)將注釋推送到Angular中的博客對象,然后向/blogs/:blogID
端點提交PUT
請求,並使用新的注釋更新整個博客對象。
2)將POST
請求提交到/blogs/:blogID/comments
端點,其中請求主體只是新注釋,找到博客,將注釋推送到vanilla js中的數組,然后保存:
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);
});
});
要么
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);
});
});
我確實找到了這個stackoverflow帖子 ,回答者在其中討論了選項2與選項3,並且基本上說要盡可能使用選項2,這對我來說似乎更簡單。 (而且我通常會嘗試避免使我無法使用鈎子和其他貓鼬禮物的方法。)
你怎么看? 有什么建議嗎?
從應用的角度來看,第3點更好。 我認為是這樣。
在性能方面,它們都做相同的事情,因此可能沒有太多差異或任何明顯的差異。 但是選項3更安全,更清潔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.