首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoose .Populate()返回空数组

Mongoose .Populate()返回空数组
EN

Stack Overflow用户
提问于 2019-06-05 21:10:02
回答 1查看 180关注 0票数 0

我不明白问题出在哪里。以及为什么“task”数组中的每个元素都是空的。

代码语言:javascript
复制
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

代码语言:javascript
复制
const newUser = {
    email: req.body.email,
    password: req.body.password,
    tasks: defaultTasks
};

获取用户任务

代码语言:javascript
复制
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中的问题。但我看不出来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 22:10:28

您的代码不会将您的任务保存到DB中,它只是创建一个对象。因此,稍后当您填充User时,在DB中找不到任务。

代码语言:javascript
复制
const task1 = await new Task({
  title: "Welcome! Here You Can:"
}).save();

// or

const task1 = await Task.create({
  title: "Welcome! Here You Can:"
});

附注:当然,您可以按您想要的方式处理异步调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56461186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档