node.js - Mongoose 选择与填充不起作用

标签 node.js mongodb mongoose mongodb-query

我正在 mogoose 中进行查询,如果我在查询选择上添加任何参数,则填充参数会丢失,例如我有以下架构:

部门:

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 } ]

是什么让我想知道选择是否破坏了填充。 我的 Mongoose 版本是3.8.8

最佳答案

当然,您只需指定 fields you want 。目前您只有“电子邮件”,因此这就是您得到的全部:

var query=mongoose.model('Employee').find();
query.select('email _department').populate('_department','name');
query.exec(function(err,data){
    console.log(data);
});

关于node.js - Mongoose 选择与填充不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598099/

相关文章:

javascript - express 发送后无法设置标题

javascript - Adonis Lucid ORM 不返回数据

security - 无法使用 MongoDB super 用户从终端连接到其他数据库

java - MongoDB - 在java中实现nor查询

javascript - Mongoose 引用更新

node.js - Mongoose 身份验证数据库 Mongo 2.6

node.js - Node.js 中的 NoSQL/MongoDB 风格查询引擎

MongoDB 列表 - 获取每第 N 个项目

node.js - 如何在数据迁移期间使用 mongoose 设置 UpdatedAt 时间戳

javascript - 错误 : read ECONNRESET when inserting data into table