Как заполнить виртуальное свойство вычисляемым значением как свойство localField? - PullRequest
0 голосов
/ 29 января 2019

У меня есть документ с массивом пар uid и ролей, как в этой схеме.

TestSchema = new mongoose.Schema({
  users: {
    type: [
      {
        uid: { type: String },
        role: { type: Number }
      }
    ]
  }
});

Для схемы я хочу указать виртуальный атрибут owner, который заполняется документом издругая коллекция.Я хочу заполнить его документом, который имеет тот же uid, что и uid элемента массива от users до role: 1 (всегда есть один элемент массива с role: 1).Установка localField для самого виртуального атрибута и попытка вычислить его с помощью функции получения атрибутов, подобной этой

XSchema.virtual("owner", {
  ref: "User",
  localField: "owner", // ???
  foreignField: "uid",
  justOne: true
}).get(function() {
  return this.user.find(user => {
    return user.role ===1;
  });
});

, а затем просто вызов

X.find().populate("owner");

не работает, потому чтоФункция геттера не применяется перед населением.Как использовать вычисленное значение из документа в качестве значения localField здесь?Какие еще варианты у меня есть, кроме нескольких запросов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...