Javascript Mongoosejs虚拟填充不检索foregin集合

Javascript Mongoosejs虚拟填充不检索foregin集合,javascript,node.js,mongoose,models,Javascript,Node.js,Mongoose,Models,这是答案集 var mongoose = require("mongoose"); var answerSchema = new mongoose.Schema ({ questionId:String, username:String, answered:Boolean }); answerSchema.virtual('quest', { ref: 'Question', localField: 'questionId', foreignField: '_id'

这是答案集

var mongoose = require("mongoose");
var answerSchema = new mongoose.Schema ({
    questionId:String,
    username:String,
    answered:Boolean
});


answerSchema.virtual('quest', {
ref: 'Question',
localField: 'questionId',
foreignField: '_id'
},{ toObject : {virtuals:true} }, { toJSON: { virtuals:true } });
下面是我用来尝试从基于id的“问题”模型中填充的查询。但我只从“答案”集合中返回值,即使foregin集合中有基于id的数据。我做错了什么?编辑:我正在使用Mongoose版本“^4.6.7”


您确定有问题的型号是
\u id=“58497379b0094008fe202b62”
?尝试无条件地执行查询,如
Answer.find({}).populate('quest').exec(函数(错误,VAL){console.log(VAL);})是,它在问题模型中以“\u id:58497379b0094008fe202b62”的形式存在,在回答模型中以“58497379b0094008fe202b62”的形式存在。当我按照您的建议进行查询时,答案模型带来了三个值,我也查询了问题模型,它带来了记录。但是虚拟记录,在我的例子中,vals.quest是未定义的。
Answer.findOne({questionId:"58497379b0094008fe202b62"}).populate('quest').exec(function(error, vals) {
console.log(vals) }); // vals does not have the foregin collection related fields.