私はMongoDBを使い慣れていません。ユーザー、ゲーム、プレーヤーのモデルでMongooseを使って簡単なデータベースを作成しています。MongoDB Mongooseネストされたオブジェクトを持つオブジェクトを保存する
したがって、1人のユーザーにはゲームが1つも数多く含まれていません。すべてのゲームはプレイヤーに任され、各プレイヤーはユーザーを参照します。
const UserSchema = new Schema({
name: String,
games: [{
type: Schema.Types.ObjectId,
ref: 'game'
}]
});
const GameSchema = new Schema({
mode: Number,
players: {
type: [{
type: Schema.Types.ObjectId,
ref: 'player'
}],
required: true
}
});
const PlayerSchema = new Schema({
order: Number,
isWinner: Boolean,
user: {
type: Schema.Types.ObjectId,
ref: 'user',
required: true
}
});
だから、今フロントエンドで、私は、ユーザージョー(_id:11111)のための新しいゲームを作成するために、バックエンドへの嘆願書を送りたい:とボブ(_idこのように(私は明確にするためのスキーマを簡素化) :22222)ので、私はボディに/ api/gamesにPOSTを送ります。{ users: [ 11111, 22222 ] }
私の質問は、バックエンドで新しいゲームを作成するために、2人のプレイヤーを作成することです。これを達成する最良の方法は何ですか?
Game.create()メソッドでは、データの取得、プレーヤの作成と保存、ゲームの作成、プレーヤの割り当て、ゲームの保存、ユーザーの更新とゲームIDの追加を行いますか?
また、いくつかの操作の前後に実行される特定の機能を設定できるMongooseミドルウェアについても読んでいます。だから、多分それは良いでしょう:Game.create前 事前機能、Game.create前に選手 ポスト関数を作成するには、ユーザーに
を更新するには、この最後のものはきれいそうです。 どのような方法が最適ですか?私が考えていない別のものかもしれない?
おかげ