mongooseselect与填充不工作
我在mogoose查询,如果我添加查询select任何参数,填充参数丢失,例如我有以下模式:
部:
var mongoose = require('mongoose'); var schema = mongoose.Schema({ name: {type:String,required: true,index: {unique: true}} , text: String }) module.exports=mongoose.model('Department',schema);
雇员:
var mongoose = require('mongoose'); var ObjectId=mongoose.Schema.ObjectId; var schema = mongoose.Schema({ name: {type:String,required: true} , lastName: {type:String} , birthday:Date, email:{type:String,required: true,index: {unique: true}}, _department:{type:ObjectId,ref:'Department'}, isUser:Boolean },{ strict:false}); module.exports=mongoose.model('Employee',schema);
如果我做:
var query=mongoose.model('Employee').find(); query.select('email').populate('_department','name'); query.exec(function(err,data){ console.log(data); });
我得到以下输出
[ { email: 'email@email.com.br', _id: 532e570864803bf505e51c81 } ]
我会期待这一点:
[ { _department: { _id: 532c77c3485925d806436981, name: 'bar' }, email: 'email@email.com.br', _id: 532e570864803bf505e51c81, __v: 0 } ]
如果我做出如下:
var query=mongoose.model('Employee').find(); query.populate('_department','name'); query.exec(function(err,data){ console.log(data); });
我得到这个输出
[ { _department: { _id: 532c77c3485925d806436981, name: 'bar' }, name: 'mimimi', email: 'email@email.com.br', _id: 532e570864803bf505e51c81, __v: 0 } ]
什么让我怀疑,select是打破人口。 我的mongoose版本是3.8.8
当然你只是指定你想要的领域 。 目前你只有“电子邮件”,所以你得到的只是:
var query=mongoose.model('Employee').find(); query.select('email _department').populate('_department','name'); query.exec(function(err,data){ console.log(data); });
在这里工作在mongoose和这里company_name字段是通过引用ModelName.find()填充('parent_id','company_name').select('用户名移动firstname lastname company_name')填充。
试试我的代码:
const Employee= require('../models/employee'); Employee.find({}, 'email _department') .populate('_department', ['name']) .exec(function(err, list_employee) { if (err) { return next(err); } //Successful console.log(list_employee); });
将为你工作!