我不明白问题是什么。 以及为什么“任务”数组中的每个元素都为空。
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 {
{任务:[5cf78ac1d08ee617fc89f7ed,5cf78ac1d08ee617fc89f7ee]
{{之后的任务:[],
请帮助!我发现的所有内容都无法解决我的问题。 可能是defaultTasks中的问题。但是我看不到。
答案 0 :(得分:0)
您的代码不会将您的任务保存到DB,而只是创建一个对象。因此,稍后填充用户时,在数据库中找不到任何任务。
const task1 = await new Task({
title: "Welcome! Here You Can:"
}).save();
// or
const task1 = await Task.create({
title: "Welcome! Here You Can:"
});
P.s。当然,您可以按照自己的方式处理异步调用。