gpt4 book ai didi

node.js - populate 对 Mongoose 不起作用总是返回未定义

转载 作者:太空宇宙 更新时间:2023-11-03 23:35:37 26 4
gpt4 key购买 nike

我正在尝试创建一个电子学习应用程序,这是我的模式,但是每当我尝试在 mongodb 中呈现用户的类(class)并且它显示特定用户正在学习的类(class)时,现在就会出现问题。

数据在数组中

"courses" : [ "Learn how to be awesome", "Learn how to be a chef" ] 

两个架构

var UserSchema = Schema({
email: String,
password: String,
courses: [{ type: Schema.Types.String, ref: 'Course'}],
});

var CourseSchema = Schema({
title: String,
owners: [{ type: Schema.Types.ObjectId, ref: 'User'}],
body: String,
teacher: { type: Schema.Types.String, ref: 'User'},

});

routes.js - 每当我尝试填充用户的类(class)对象时,它总是返回未定义

router.get('/my-courses', isLoggedIn, function(req, res) {

User
.findById(req.user.id)
.populate('courses')
.exec(function(err, courses) {
console.log(courses); // always return undefined
res.render('course/student-courses', {
userCourses: courses
});
});
});

即使我已经将数据添加到用户的类(class)字段中,它仍然返回未定义。

最佳答案

首先您应该更改您的 UserSchema:

var UserSchema = Schema({
email: String,
password: String,
courses: [{ type: Schema.Types.ObjectId, ref: 'Course'}],
});

您只能通过 _id 引用另一个架构。还要在 CourseSchema 中对教师进行此更改。

然后使用填充和字段选择:

  User
.findById(req.user.id)
.populate('courses', 'title')
.exec(function(err, courses) {
console.log(courses); // always return undefined
res.render('course/student-courses', {
userCourses: courses
});
});

它将仅返回类(class)标题。

关于node.js - populate 对 Mongoose 不起作用总是返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32930617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com