【问题标题】:Mongoose: Invalid value for schema Array path, got value "undefined"Mongoose:模式数组路径的值无效,得到值“未定义”
【发布时间】:2020-10-24 07:28:55
【问题描述】:

我有以下问题,即当使元素等于模式时未定义元素。 Course.js 中的元素课程是未定义的。

User.js 文件:

const mongoose = require("mongoose");

let Course = require(__dirname + "/Course.js");
let Tutor = require(__dirname + "/Tutor.js");

let Schema = mongoose.Schema;

console.log(Course.courseSchema)

var userSchema = new Schema ({
  name: String,
  email: String,
  username: String,
  password: String,
  courses: [Course.courseSchema],
  tutors: [Tutor.tutorSchema],
  isTutor: Boolean,
  subscribed: Boolean,
  googleId: String,
  facebookId: String
});


let User = mongoose.model("User", userSchema);


module.exports = {
  userSchema: userSchema,
  User: User
}

Course.js 文件:

const mongoose = require("mongoose");

let Schema = mongoose.Schema;

let Tutor = require(__dirname + "/Tutor.js");
let Category = require(__dirname + "/Category.js");
let Module = require(__dirname + "/Module.js");
let User = require(__dirname + "/User.js" );
let CourseReview = require(__dirname + "/CourseReview.js");

var courseSchema = new Schema ({
  title: String,
  categories: [Category.categorySchema],
  tags: [String],
  shortDescription: String,
  students: [User.userSchema],
  language: [String],
  tutor: [Tutor.tutorSchema],
  requirement: String,
  description: String,
  module: [Module.moduleSchema],
  reviews: [CourseReview.courseReviewSchema]
});

let Course = mongoose.model("Course", courseSchema);

module.exports = {
  courseSchema: courseSchema,
  Course: Course
}

dbs 文件结构:

dbs
├── Course.js
├── User.js

我返回“TypeError:架构数组路径 courses 的值无效,得到值“未定义”。我一直在尝试修复目录,但无法识别架构,我已经阅读了允许您的子文档文档在另一个架构中调用架构。有人知道如何解决这个问题吗?

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    UserCourses 模块之间存在循环依赖关系。就这么简单 - more on this particular issue. 这就是为什么在加载 User.js 时未定义 Course.courseSchema

    此外,您的架构没有实际意义。您可能希望通过某种标识符来引用这些用户、课程、导师,从而创建关系。您不希望 user.courses 包含 Course 再次包含 user 的实例等等。

    有关如何在 mongoose 中创建关系的说明,请参阅 this answer

    【讨论】:

    • 感谢您的建议,它实际上帮助我再次重组我的数据库以避免循环依赖
    猜你喜欢
    • 2019-09-12
    • 2019-05-17
    • 2015-08-31
    • 2021-06-05
    • 2014-12-18
    • 2016-05-01
    • 2021-03-04
    • 2017-07-07
    • 2020-04-10
    相关资源
    最近更新 更多