我是 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
}
});
所以,现在在前端,我想向后端发送请愿书,为用户 Joe (_id:11111) 和 Bob (_id:22222) 创建一个新游戏,所以我向 /api/games 发送一个带有正文的 POST{ users: [ 11111, 22222 ] }
现在我的问题是,后端要创建一个新游戏,它还必须创建 2 个玩家。实现这一目标的最佳方法是什么?
在 Game.create() 方法中,我是否应该检索数据、创建和保存玩家、创建游戏、分配玩家、保存游戏以及更新用户和添加游戏 ID?
我还阅读了有关 Mongoose 中间件的信息,您可以在其中设置在某些操作之前或之后执行的某些功能。所以也许更好:在 Game.create 之前的 pre 函数,在 Game.create 之前创建玩家 post 函数,更新用户
最后一个看起来更干净。最好的方法是什么?也许另一个我没有考虑过?
谢谢