Mongoose заполнить возвращает пустой массив, но возвращает данные без заполнения

Я пытаюсь получить встречи и заполнить их с данными пользователя и сведениями о враче. У меня есть такая схема

let appointmentSchema = new Schema({
  reason: String,
  start: DateType,
  end: DateType,
  appointmentStamp: Number,
  userId: {
    type: ObjectId,
    ref: 'User'
  },
  doctorId: {
    type: ObjectId,
    ref: 'Doctor'
  },
  approved: Boolean,
  held: Boolean,
  timeOfAcceptance: Number,
  createdOn: { type: Number, default: (new Date().getTime()) },
  updatedAt: Mixed
}, {runSettersOnQuery: true})

И на бегу

Appointment.find({userId: authId}).populate('userId doctorId').exec()

Я получаю пустой массив, но Appointment.find({userId: authId}). Exec() возвращает все встречи для этого пользователя с предоставленным userId, чтобы найти то, что я пропускаю

Вот пример назначения

  {
    "_id": "5a0d424079191657fca9e853",
    "reason": "Say Hello",
    "approved": false,
    "held": false,
    "doctor": "5a0add9b577d7916187cd9f2",
    "patient": "59f5df20a3071554c5f843e1",
    "appointmentStamp": 1510927380000,
    "__v": 0,
    "createdOn": 1510817910134
  }

1 ответ

Я попробовал это, и это сработало, не знаю почему

patient: {
   type: String,
   ref: 'patient'
},
doctor: {
   type: String,
   ref: 'doctor'
}

вместо ObjectId я использовал тип String, тогда запрос будет похож

Appointment.find({patient: authId, canceled: false})
  .populate('patient doctor').exec()
Другие вопросы по тегам