Mongoose: как заполнять подвойства из виртуальных свойств схемы - PullRequest
0 голосов
/ 28 мая 2019

У меня есть схема mongodb, определенная с помощью mongoose, и некоторые вложенные документы вложены в несколько уровней.Я хочу иметь доступ к этим (заполненным) поддокументам в виртуальных свойствах другой схемы, но я не могу этого сделать.Кажется, я могу получить доступ к документам на первом уровне вложения, но не дальше.

Вот пример моих схем:


const SchemaA = {
   name: {type: string}
   items: [
     {
      schemaB: {
       type: schema.type.ObjectId,
       ref: "B"
      }
     }
   ]
} 
const SchemaB = {
   name: {type: string}
   schemaC: {
       type: schema.type.ObjectId,
       ref: "C"
      }
}
const SchemaC = {
   types: [{label: {type: String}}]
}

Что яя хочу получить доступ к SchemaC.types из виртуального свойства в SchemaA.

Вот чего я хочу достичь:


SchemaA.virtual("types").get(function(){
   return this.items.map(item => {
       return {name: item.schemaB.name, types: item.schemaB.SchemaC.types}
   })
})

Из вышеприведенного item.schemaB кажетсязаполнить просто отлично, но item.schemaB.SchemaC кажется просто objectId schemaC.

Я не уверен, если это вообще возможно, если честно, но я не могу найти окончательный ответ где-либо в Интернететак что я надеюсь, что кто-то здесь может помочь.Спасибо!

1 Ответ

0 голосов
/ 28 мая 2019

Так что в мангусте нужно использовать метод populate.

 .populate({
    path: 'schemaB',
    populate: {
      path: 'schemaC'
    }
  });

заселение мангуста

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