5
私はノード+ Expressプロジェクトを実行している、私はノード+エクスプレスマングースのサブコレクションマニュアルを挿入
var Post = mongoose.Schema({
title: String,
body: String,
author: String,
dateCreated: {type: Date, default: Date.now },
comments: [{author: String, body: String, date: Date}]
});
var Post = db.model('Post', Post);
を以下のスキーマの基本的なブログシステムを構築し、モデル午前私は、次のコードを経由してポストの要求を受け入れ、
app.post('/addpost', function(req,res){
console.log(req.body.post);
var post = new Post(req.body.post);
post.save(function(err){
if(!err){
res.redirect('/');
}else{
res.redirect('/');
}
})
})
私が持っている質問は、私がすでに開発したコーダを使ってスキーマにコメントを追加するにはどうすればいいですか?マングースのために明らかに許容可能であるが、コメントを追加するためにどのように私はこれについて行くだろう
req.body.post
出力
{ title: 'Hello World', body: 'This is a body', author: 'Bioshox' }
?
ありがとうございます!新しいコメントが、それ以外の場合は、最初のコメントでブログ記事を追加し、その後$push
それが成功場合
var comment = {
author: req.body.post.author ,
body: req.body.post.body,
date: new Date()
};
Post.findOneAndUpdate(
{ title: req.body.post.title },
{ $push: { comments: comment }},
{ safe: true, upsert: true },
function(err, blogModels) {
// Handle err
});
このコードは、単に、Blog
ポストを探してみてください:
「upsert」とは何ですか? – chovy
'upsert'プロパティが' true'ならば、mongoは最初に一致する 'title:req.body.post.title'基準を持つ文書を見つけようとします。もしそうなら、文書を '{$ push ...}'で更新するだけです。さもなければ、mongoは新しい文書を作成し、それを挿入し$最初のコメントinitを押します。 詳細情報:http://docs.mongodb.org/manual/reference/command/findAndModify/ –
実際に私はupsertがそのタイトルの** Post **を見つけ出すように見えます。存在しなければPostを作成しますコメントではありません – mrBorna