「Mongo Way」は、2人のユーザー間でアイテムの保留中の取引をモデル化するためのものです。MongoDBで未定の取引をモデル化するには?
私はユーザーコレクションを持っており、私はブックコレクションを持っています。私のアプリでは、ユーザーはお互いの取引を提案することができます。貿易提案が承認されるまで、貿易はデータベースに保留中の取引として保存される必要があります。
最良の選択肢は、(マングースを使用して)このようにモデル化された各書籍の文書に「取引」プロパティを持つことであると私には思える:
const booksSchema = new Schema({
title: { type: String, required: true },
createdAt: { type: Date, 'default': Date.now },
updatedAt: { type: Date, 'default': Date.now },
author: { type: String, required: false},
imageUrl: { type: String, required: false},
ownerUser: { type: Schema.ObjectId, required: true },
trades: [{
fromUser: { type: Schema.ObjectId, required: true },
bookOffered: { type: Schema.ObjectId, required: true }
}]
});
私はこれを見問題は、それが関与するということです取引が承認されたときに2つの文書を更新する。取引が受け入れられると仮定すると、各文書のownerUser
を変更する必要があり、trades
配列をクリアする必要があります。
これを行うと、何らかの理由で更新されなかった場合でも、もう1つも更新されないように、変更を「トランザクション」にすることが望ましいと思われます。
これは、このような状況をモデル化する典型的な方法ですか?状況の「取引」部分について何をすべきか?
したがって、本の各例には独自のエントリがありますか?おそらくスキーマに_idも含めるべきです。 –
モンゴースにはそれが自動的に含まれていると思います。 – alwayslearning
MongoDB自体があなたのために_idをサーバーに挿入します。 –