猫鼬填充未定义的字段
Mongoose populate undefined fields
我看到很多关于此的问题,但我找不到问题所在。当我使用 populate 获取 "Foreign Key" 时,我的字段未定义。
用户模型 :
var userSchema = new Schema({
email : { type: String, required: true, unique: true },
password : { type: String, required: true },
firstname : { type: String, required: true },
lastname : { type: String, required: true },
created_at : Date,
updated_at : Date,
office : [ { type: Schema.Types.ObjectId, ref: 'Office' } ]
});
var User = mongoose.model('User', userSchema, 'User');
module.exports = User;
办公室模型:
var officeSchema = new Schema({
name : { type: String, required: true },
address : String,
city : String,
geolocation : [ { type: Schema.Types.ObjectId, ref: 'Geolocation' } ],
company : [ { type: Schema.Types.ObjectId, ref: 'Company' } ]
});
var Office = mongoose.model('Office', officeSchema, 'Office');
module.exports = Office;
填充代码:
User.find({})
.populate('office')
//.populate('office', 'name') I tried this too
.exec(function (err, users) {
if (err) return handleError(err);
users.forEach(function(user){
console.log('Office name: ', user.office.name);
});
});
我想获取用户办公室名称。但是这个 user.office.name
returns 我未定义,当我这样做时 user.office
我可以看到带有名称字段的对象。但是我没有访问名称字段的权限。
userSchema
中的office
字段定义为数组。因此,为了访问其元素,请使用 user.office[0].name
、user.office[1].name
等
否则,使用循环:
user.office
.forEach(function(each) {
console.log('Office name: ', each.name);
});
您只需将查询编辑为
populate({path: "office", populate: {path:"company"}})
它还会填充公司数据。
我看到很多关于此的问题,但我找不到问题所在。当我使用 populate 获取 "Foreign Key" 时,我的字段未定义。
用户模型 :
var userSchema = new Schema({
email : { type: String, required: true, unique: true },
password : { type: String, required: true },
firstname : { type: String, required: true },
lastname : { type: String, required: true },
created_at : Date,
updated_at : Date,
office : [ { type: Schema.Types.ObjectId, ref: 'Office' } ]
});
var User = mongoose.model('User', userSchema, 'User');
module.exports = User;
办公室模型:
var officeSchema = new Schema({
name : { type: String, required: true },
address : String,
city : String,
geolocation : [ { type: Schema.Types.ObjectId, ref: 'Geolocation' } ],
company : [ { type: Schema.Types.ObjectId, ref: 'Company' } ]
});
var Office = mongoose.model('Office', officeSchema, 'Office');
module.exports = Office;
填充代码:
User.find({})
.populate('office')
//.populate('office', 'name') I tried this too
.exec(function (err, users) {
if (err) return handleError(err);
users.forEach(function(user){
console.log('Office name: ', user.office.name);
});
});
我想获取用户办公室名称。但是这个 user.office.name
returns 我未定义,当我这样做时 user.office
我可以看到带有名称字段的对象。但是我没有访问名称字段的权限。
userSchema
中的office
字段定义为数组。因此,为了访问其元素,请使用 user.office[0].name
、user.office[1].name
等
否则,使用循环:
user.office
.forEach(function(each) {
console.log('Office name: ', each.name);
});
您只需将查询编辑为
populate({path: "office", populate: {path:"company"}})
它还会填充公司数据。