我有一个包含三个相关模型的数据库,这里是mongoose模式
// models/company.js
let companySchema = new Schema({
rut : String,
name : String,
owner : { type: Schema.Types.ObjectId, ref : 'User' }
})
export default mongoose.model('Company', companySchema)
// models/account.js
let accountSchema = new Schema({
code : String,
name : String,
type : {
id : Number,
name : String
}
})
// I have two different exports, because sometimes I just need the schema,
// and others I need the model
export default accountSchema
export const Account = mongoose.model('Account', accountSchema)
// models/mayor.js
let mayorSchema = new Schema({
account : { type: Schema.Types.ObjectId, ref : 'Account' },
company : { type: Schema.Types.ObjectId, ref : 'Company' },
month : Number,
year : Number,
data : [{
date : Date,
detail : String
}]
})
export default mongoose.model('Mayor', mayorSchema)
我想从Mayor
查询我的mayorSchema
模型,我的查询是这样的
import {Account} from '../models/account'
import Company from '../models/company'
import Mayor from '../models/mayor'
Mayor
.find({ 'company' : companyId, 'month' : month, 'year' : year })
.populate('company')
.populate('account')
.exec((err, mayores) => {
if (err) {
console.log(JSON.stringify(err))
res.status(500)
res.json({
code: "001",
message: "Some error with the server. Please try later"
})
} else {
res.status(200)
res.json(mayores)
}
})
该查询的结果是一个数组,但是数组中的每个对象都将account
属性设置为null
。我不知道为什么会发生这种情况,如果我直接在mongo控制台上查询数据,一切都很好,所有文档都正确设置了他们的帐户属性。一些可能有用的知识:
Mayor.insertMany
方法插入的市长集合中的文档,在插入之后,如果我检查刚创建的文档,则会正确设置帐户字段。那为什么会这样呢?为什么我不能填充我的account
字段。我猜这是与子文档引用相关的东西,但我原本预计失败的人口只返回ObjectId
,而不是null。