这里我有两个模式:
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!
)}
})
或者我可以使用中间件或填充函数来简化操作?谢谢!
最佳答案
在拯救你的人的同时,你需要一份工作。 因此,这就是您可以进行相同操作的方式:
- 创建新工作/寻找现有工作。
- 将找到的工作的 objects _id 字段分配给您的新 Person 并保存。
示例代码
let person = new Person({
name : 'TszHin'
});
Job.findOne({ title : 'Abc'})
.then(function(job){
person.job = job._id;
person.save();
});
关于javascript - Mongoose - 使用 objectid 保存对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51297406/