Я новичок в MongoDB, и я создаю простой db с 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) и Боб (_id : 22222), и поэтому я отправляю POST в/api/games с телом { users: [ 11111, 22222 ] }
Теперь, мой вопрос заключается в том, что для создания новой игры для создания новой игры также необходимо создать 2 игрока. Каков наилучший способ достичь этого?
В методе Game.create() я должен получить данные, создать и сохранить игроков, создать игру, назначить игроков, сохранить игру, а также обновить пользователей и добавить игровые идентификаторы?
Я также читал о промежуточном программном обеспечении Mongoose, где вы можете установить определенные функции, которые будут выполняться до или после некоторых операций. Так что, может быть, это лучше: pre function before Game.create, чтобы создать игроков post function before Game.create, чтобы обновить пользователей
Это последнее кажется чище. Каков наилучший способ? Может быть, еще один, который я не рассматривал?
Благодаря