Свяжите одну схему с другой - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть моя пользовательская схема:

const userSchema = new Schema({
  name: { type: String, required: true },
  email: { type: String, required: true },
  password: { type: String, required: true },
  date: { type: Date, default: Date.now },
  active: { type: Boolean, default: false }
});

Я хочу создать схему статуса выхода.Данные будут предоставлены только одним пользователем обо всех оставленных статусах.Я хочу связать каждое состояние отпуска с соответствующим идентификатором схемы пользователя.Я попытался оставить схему состояния следующим образом:

const leaveSchema = new Schema({
  leave: [
    {
      email: { type: String, required: true },
      month: { type: String, required: true },
      year: { type: Number, required: true },
      earnedleave: { type: Number },
      sickleave: { type: Number },
      festivalleave: { type: Number },
      compoff: { type: Number }
    }
  ]
});

Как я могу связать мой emailid с userschema.Это возможно?Если так, как я могу настроить это?

1 Ответ

0 голосов
/ 04 февраля 2019

Нам не нужно связывать схему для получения leave на основе user, для этого вы можете использовать агрегирование,

db.user.aggregate([
    ...
    {$lookup: {from: "leave", localField: "email", foreignField: "leave.email", as: "leaves"}},
    ...
]);

Тем не менее, если вы хотите связать две коллекции, вынужно использовать ref используя ObjectId

const leaveSchema = new Schema({
  leave: [
    {
      user: { type: Schema.Types.ObjectId, ref: 'user' }, //Your model name as reference
      email: { type: String, required: true },
      month: { type: String, required: true },
      year: { type: Number, required: true },
      earnedleave: { type: Number },
      sickleave: { type: Number },
      festivalleave: { type: Number },
      compoff: { type: Number }
    }
  ]
});
...