![](/img/trans.png)
[英]Mongoose populate returns empty array or list of ObjectIds
[英]Mongoose .Populate() returns empty array
我不明白问题是什么。 为什么'tasks'数组中的每个元素都为null。
Schema = mongoose.Schema;
const userSchema = new Schema({
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
tasks: [{type: Schema.Types.ObjectId, ref: 'Task'}]
}
);
const taskSchema = new Schema({
title: String
});
const User = mongoose.model('User', userSchema);
const Task = mongoose.model('Task', taskSchema);
// Add some default to DB
const task1 = new Task({
title: "Welcome! Here You Can:"
});
const task2 = new Task({
title: "ADD EDIT DELETE SHARE your TASKS "
});
const defaultTasks = [task1, task2];
创建新用户时我添加defaultTasks
const newUser = {
email: req.body.email,
password: req.body.password,
tasks: defaultTasks
};
获取用户任务
app.get('/tasks/', function(req, res){
const email = req.query.user;
User
.findOne({email: email})
.populate('tasks')
.exec()
.then(foundUser => {
console.log(foundUser);
const data = [];
Object.keys(foundUser.tasks).forEach(function(key) {
const val = foundUser.tasks[key];
data.push([val.title, val._id]);
});
res.send(data);
console.log('Data to send ' + data);
});
});
之前.Populate()console.log {
{tasks:[5cf78ac1d08ee617fc89f7ed,5cf78ac1d08ee617fc89f7ee]
在{{tasks:[]之后,
请帮忙! 我发现的一切并没有解决我的问题。 也许defaultTasks有问题。 但我没有看到它。
您的代码不会将您的任务保存到DB,它只是创建一个对象。 因此,稍后当您填充User时,DB中找不到任何任务。
const task1 = await new Task({ title: "Welcome! Here You Can:" }).save(); // or const task1 = await Task.create({ title: "Welcome! Here You Can:" });
Ps当然可以按照你想要的方式处理异步调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.