Mongoose Populate Virtuals не работает и возвращает ноль - PullRequest
0 голосов
/ 30 мая 2018

Я прочитал о Mongoose Populate Virtuals и подумал, что это здорово, что это похоже на операцию соединения в SQL.

Когда я попробовал это в моем приложении, это не сработало,Мое приложение похоже на это, только упрощенное

У меня есть схема класса и учителя в отдельных файлах

Classroom.js

...
...
var ClassroomSchema = new Schema({
   class_code:String,
   teacher_id:String
});

ClassroomSchema.virtual('teacher',{
   ref:'Teacher',             //model to reference
   localField:'teacher_id',   //Class.teacher_id
   foreignField:'teacher_id', //a Teacher.teacher_id
   justOne:true
});

module.exports = mongoose.model('Classroom',ClassroomSchema');

Teacher.js

***
***
var TeacherSchema = new Schema({
   name:String,
   teacher_id:String
});

module.exports = mongoose.model('Teacher',TeacherSchema);

в моем app.js

var Classroom = require('Classroom.js');
var Teacher = require('Teacher.js');

//Find classrooms
Classroom.find({}).populate('teacher').exec(function(err,docs){
    if(err) throw err
    if(docs) console.log(docs);
});

Затем он возвращает классные комнаты, но с полем 'учителя', равнымна ноль

Я что-то здесь упускаю?Почему возвращается null?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

это не работает в версии после 5.2.18.если установлено значение true для виртуалов, у вас есть только виртуальные поля, а если установлено значение false, у вас есть виртуальное заполнение, но нет полей

0 голосов
/ 30 мая 2018

Добавьте параметры toJson и toObject в схему следующим образом:

var ClassroomSchema = new Schema({
   class_code:String,
   teacher_id:String
},
{ toJSON: { virtuals: true }, toObject: { virtuals: true }});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...