猫鼬虚拟 return 空
Mongoose virtual return null
我有一个 Person 模式:
const person = new mongoose.Schema({
name: String,
birthday: Date,
sex: String
},
{
toObject: { virtuals: true },
toJSON: { virtuals: true }
});
person.virtual('tasks', {
ref: 'task',
localField: '_id',
foreignField: 'person'
});
export default mongoose.model('person', person);
还有一个具有 person
字段的任务:
const schema = new mongoose.Schema({
person: {
type: mongoose.Schema.Types.ObjectId,
ref: 'person',
required: true
},
name: String
});
export default mongoose.model('task', schema);
还有我的API找回一个人:
api.get('/person/:id', async (req, res) => {
let personID = req.params.id;
if (personID) {
let person = await Person.findById(personID);
if (person)
res.json(person);
else
res.status(404).end();
}
else {
res.status(400).end();
}
});
当我查询一个人的 API 时,tasks
总是 null
,知道为什么吗?
谢谢
更新
我试过:
let person = await Person.findById(personID).populate('tasks').exec();
它还在返回 null
。
Use populate
in your query.
能否检查以下查询之一
let person = await Person.findOne({ _id: personID })
.populate('tasks')
.exec((error, personData)
=> personData);
或
let person = await Person.findById(personID)
.populate('tasks')
.exec((error, personData) => personData);
reference Link : http://thecodebarbarian.com/mongoose-virtual-populate
好的,我发现了问题,我在设置虚拟之前注册了模型(在我围绕 mongoose.Schema 编写的一些包装器中)。
我有一个 Person 模式:
const person = new mongoose.Schema({
name: String,
birthday: Date,
sex: String
},
{
toObject: { virtuals: true },
toJSON: { virtuals: true }
});
person.virtual('tasks', {
ref: 'task',
localField: '_id',
foreignField: 'person'
});
export default mongoose.model('person', person);
还有一个具有 person
字段的任务:
const schema = new mongoose.Schema({
person: {
type: mongoose.Schema.Types.ObjectId,
ref: 'person',
required: true
},
name: String
});
export default mongoose.model('task', schema);
还有我的API找回一个人:
api.get('/person/:id', async (req, res) => {
let personID = req.params.id;
if (personID) {
let person = await Person.findById(personID);
if (person)
res.json(person);
else
res.status(404).end();
}
else {
res.status(400).end();
}
});
当我查询一个人的 API 时,tasks
总是 null
,知道为什么吗?
谢谢
更新
我试过:
let person = await Person.findById(personID).populate('tasks').exec();
它还在返回 null
。
Use
populate
in your query.
能否检查以下查询之一
let person = await Person.findOne({ _id: personID })
.populate('tasks')
.exec((error, personData)
=> personData);
或
let person = await Person.findById(personID)
.populate('tasks')
.exec((error, personData) => personData);
reference Link : http://thecodebarbarian.com/mongoose-virtual-populate
好的,我发现了问题,我在设置虚拟之前注册了模型(在我围绕 mongoose.Schema 编写的一些包装器中)。