提问者:小点点

TypeError:无法读取未定义的属性“belongsto”


我正在尝试联系许多对许多,在两个模式“培训和培训课程”,所以我做了第三个模式“课程”,以尝试关系1对许多。但是我得到了一个错误:

null

TypeError:无法读取对象上未定义得属性“belongsto”。(c:UsersDellDownloadsGraphql-12.18.2020Graphql-12.18.2020Graphql-12.18.2020ServerAppDatabaseDatabase.js:54:14)位于Module._compile(internal/modules/cjs/loader.js:106330)位于Object.module._extensions.js(internal/modules/cjs/loader.js:1092:10)位于Module.load(internal/modules/cjs/loader.js:928:32)位于Module.require((c:UsersDellDownloadsGraphql-12.18.2020Graphql-12.18.2020Graphql-12.18.2020ServerAppGraphqlResolversUser.js:6:12),位于object.module._extensions..js(internal/modules/cjs/loader.js:1092:10)的module._compile(internal/modules/cjs/loader.js:1063:30)

DB代码:

const Sequelize = require('sequelize');
const db = {};
const sequelize =  new Sequelize("firstDB"," "," ", {
  //from the DB amazom
  host: '  ',
    dialect: 'mysql',
    define: {
      timestamps: false,
      freezeTableName: true
    },
    operatorsAliases: false,
    pool: {
      max: 5,
      min: 0,
      acquire: 30000,
      idle: 10000
    },
  });

  db.sequelize = sequelize
  db.Sequelize = Sequelize
  db.Sequelize = sequelize
  db.Sequelize = sequelize
  db.Sequelize = sequelize
  db.Sequelize = sequelize
  db.Sequelize = sequelize

  
  db.tblUser = require("./models/user")(sequelize, Sequelize);
  db.vewStudentCourseTrainer = require("./models/studentCourseTrainer")(sequelize, Sequelize);
  db.tblTrainer = require("./models/trainer")(sequelize, Sequelize);
  db.tblCourse = require("./models/course")(sequelize,Sequelize);
  db.tblStudent = require("./models/student")(sequelize,Sequelize);
  db.tblCourseTrainer = require("./models/courseTrainer")(sequelize, Sequelize);
  db.tblStudentCourse = require("./models/studentCourse")(sequelize, Sequelize);

  db.tblCourseTrainer.hasMany(db.tblTrainer, { as: "trainer" });
  db.trainer.belongsTo(db.tblCourseTrainer, {
    foreignKey: "intTrainerID",
    as: "trainerID",
  });

  module.exports = db

CourseTrainer的模型代码

module.exports = (sequelize,DataTypes)=>{
    const CourseTrainer  = sequelize.define("tblCourseTrainer",{
      intCourseTrainerID: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true,
      },             
      intCourseID: {
        type: DataTypes.INTEGER,
        foreignKey: true,
    },
    intTrainerID: {
        type: DataTypes.INTEGER,
        foreignKey: true,
    },
},)
    return CourseTrainer
  }

教练机型号代码

module.exports = (sequelize,DataTypes)=>{
    const Trainer  = sequelize.define("tblTrainer",{
      intTrainerID: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true,
      },             
      strTrainerName: {
        type: DataTypes.STRING
    },
    
    },)
    return Trainer
  }

课程的模型代码


module.exports = (sequelize,DataTypes)=>{
    const Course  = sequelize.define("tblCourse",{
      intCourseID: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true,
      },             
      strCourseName: {
        type: DataTypes.STRING
    },
    },)
    return Course
  }

共1个答案

匿名用户

当你把这个叫做:

db.trainer.belongsTo(...)

对象中没有对象,因此,您会收到一个错误,告诉您不能访问值上的属性

我们可以在这里看到您声明对象的位置:

const db = {};

然后,沿着代码向下到您尝试执行的地方,在那里您没有定义。你确实有这个:

db.tblTrainer = require("./models/trainer")(sequelize, Sequelize);

所以,也许你想用这个?

db.tblTrainer.belongsTo(...)