猫鼬:架构数组路径的值无效,值为“未定义”

时间:2020-07-03 14:40:15

标签: node.js mongodb mongoose

我有以下问题,即当元素等于模式时,元素是不确定的。 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的无效值,值为” undefined”。我一直在尝试修复目录,但是无法识别该架构,我讨厌阅读以下子文档文档:允许您在另一个架构中调用该架构。有人知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:1)

您在UserCourses模块之间有了循环依赖。如此简单-more on this particular issue.就是为什么在加载Course.courseSchema时未定义User.js的原因。

此外,您的架构没有实际意义。您可能希望通过某种标识符来引用这些用户,课程,导师,从而建立联系。您不希望user.courses包含Course,而后者又包含user的实例,依此类推。

有关如何在猫鼬中建立关系的描述,请参见this answer