Mongoose - заполнить несколько идентификаторов

Я новичок в мангусте, и я весь день изо всех сил пытался понять населенность. Мне удалось сделать простые примеры, но теперь я создал две схемы:

Во-первых, это UserSchema с некоторыми данными пользователя:

const UserSchema: mongoose.Schema = new mongoose.Schema ({
  name: String,
  email: String
});

И второе, это MatchSchema, ведьма, которую я хочу заполнить данными пользователя, но я не уверен, сработает ли что-то вроде этого:

const MatchSchema: mongoose.Schema = new mongoose.Schema ({
  player_one: {
    id: String,
    score: Number,
    player_details: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'User'
    }
  },
  player_two: {
    id: String,
    score: Number,
    player_details: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'User'
    }
  },
  winner: String
  },{timestamps: true});

Вероятно, я использовал что-то, что не работает, и любая помощь будет оценена.


person omygoodness    schedule 14.09.2019    source источник


Ответы (1)


Вам нужно создать модель Mongoose с помощью UserSchema и назвать ее «Пользователь». Затем вы можете создать модель Match, используя MatchSchema. Предполагая, что UserSchema и MatchSchema находятся в одном файле, вы можете добавить следующее:

const User = mongoose.model('User', UserSchema)
const Match = mongoose.model('Match', MatchSchema)

Затем, когда вы хотите заполнить модель Match данными пользователя:

let data = Match.find({})
             .populate('player_one.player_details')
             .populate('player_two.player_details')
person Darren G    schedule 15.09.2019
comment
Спасибо :) Работает как шарм. Я не знал, что мне нужно заполнить объект внутри объекта, .populate('player_one.player_details') он решил все мои проблемы. - person omygoodness; 15.09.2019