我不明白问题出在哪里。以及为什么“task”数组中的每个元素都是空的。
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
{{ tasks:[],
请帮帮我!我所发现的一切都没有解决我的问题。可能是defaultTasks中的问题。但我看不出来。
发布于 2019-06-05 22:10:28
您的代码不会将您的任务保存到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:"
});
附注:当然,您可以按您想要的方式处理异步调用。
https://stackoverflow.com/questions/56461186
复制相似问题