我是MongoDB的新手,我正在用Mongoose创建一个简单的数据库,并使用以下模型:用户,游戏和玩家。MongoDB Mongoose保存具有嵌套对象的对象
因此,一个用户不包含任何或许多游戏。每场比赛都有球员,而每名球员都是指用户。像这样(我为了清楚而简化的模式):
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)和Bob(_id :22222),所以我发送POST到/ api /游戏与身体{ users: [ 11111, 22222 ] }
现在我的问题是,为后端创建一个新的游戏,它也必须创建2名球员。达到此目的的最佳方式是什么?
在Game.create()方法中,我应该检索数据,创建并保存玩家,创建游戏,分配玩家,保存游戏以及更新用户并添加游戏id。
我还阅读了关于Mongoose中间件,您可以在其中设置某些功能在某些操作之前或之后执行。所以也许它会更好: 在Game.create之前的预先功能,在Game.create之前创建球员 之后的功能,以更新用户
最后一个看起来更干净。 最好的方法是什么?也许另一个我没有考虑过?
谢谢