繁体   English   中英

Mongoose .Populate()返回空数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM