这里我有两个模式:
var personSchema = Schema({
_id: Schema.Types.ObjectId,
name: String,
job: {
type: Schema.Types.ObjectId,
ref: 'Job',
}
});
var jobSchema = Schema({
_id: Schema.Types.ObjectId,
title: String,
});
var Job = mongoose.model('Job', jobSchema);
var Person = mongoose.model('Person', personSchema);
假设Job有一些记录:
[{
"_id" : ObjectId("5b46d41e04cfc922949dcfda"),
"Title": "Teacher"
}, ...]
当我要插入一些人对象时:
[{
name: 'Peter',
job: 'Teacher'
}, ...]
在每次保存之前,我是否需要找到作业的_id
并将job
字段转换为ObjectId
类型?例如
Job.findOne({title: p.job}, (j) => {
Person.save({name: p.name, job: j._id}).exec(()=>{
// it's ok!
)}
})
或者我可以使用中间件或填充函数来简化它?谢谢!
答案 0 :(得分:1)
在保存人的同时,您需要工作。 因此,您可以按照以下步骤进行操作:
例如代码
let person = new Person({
name : 'TszHin'
});
Job.findOne({ title : 'Abc'})
.then(function(job){
person.job = job._id;
person.save();
});