私はここに2台のモデルuser
とblog
を持っています。だから、ユーザーがブログを書くとき、私のルーターはこういうものを呼び出します。mongooseを使って複数の文書を保存するには?
Promise.all([
node.save(),
user.save()
]).then(function (values) {
//do something
}).catch(function (err) {
//print error
})
すぐに気づくかもしれませんが、save()
の保証はありません。どちらも失敗する可能性があり、残りのロールバックはできません。どのようにそれらの両方が保存されているかロールバックされていることを確認できますか?いくつかの人々は、blogs
コレクションをusers
の中に入れることを提案しています。すべてが1つの文書に収められていますが、それはブログランキングをするのが難しいですね。私はMongoDBにすべてのものをまとめることが本当に良いのかどうかも分かりません。ドキュメントが大きい場合は、パフォーマンスの問題(リクエスト/秒)が発生しますか?
ありがとうございました。
質問は* "なぜあなたは' .save() 'を使用していますか?" *。それは約束を返しますが、実際には事前に発射されます。したがって、出力は 'Promise.all()'に参加しますが、実際のシーケンスは '.save()'で発生します。これらが "新規"の場合は、代わりに '.create()'を使うことができます。それらが "更新"の場合は、とにかく代わりに '.findOneAndUpdate()'を使うべきでしょう。 –
こんにちは、 'node'と' user'の両方を正しく保存します。プロミスはエラーがある場合は教えてくれるので、適切なhttpコードをクライアントに返すことができます。それでエラーがあることがわかっても、私はそれらの保存されたデータをロールバックできません。私はMongoDBの新機能で、なぜこのように設計されたのか分かりません: – zhuchun