【问题标题】:use sequelize to get association for the third model使用 sequelize 获取第三个模型的关联
【发布时间】:2016-10-24 01:29:47
【问题描述】:

我正在尝试使用 sequelize 来获取关联。

我这里有 3 个具有属性的模型:

学生 id、name、class等

student_details 学生ID,学科ID

主题 id,主题

我想获取学生的所有科目名称,我不想直接将信息存储在学生表中。有解决办法吗?

关联是:

模型/Student.js

classMethods: {
      associate: (models) => {
        Students.studentDetails = Students.hasOne(models.f_student_details, { foreignKey: { name: 'studentId', allowNull: false }, as: 'studentDetails' });
      }
}

模型/StudentDetails.js

classMethods: {
          associate: (models) => {
StudentDetails.belongsTo(models.subjects, { foreignKey: { name: 'subjectId', allowNull: true }, through: 'subjects' });

}

模型/Subjects.js

classMethods: {
          associate: (models) => {
Subjects.hasOne(models.student_details, { foreignKey: { name: 'subjectId', allowNull: false }, as: 'studentSubject' });
}

方法调用:

db.students.findAll({
include: [ model: db.students]
})

现在,它只返回 studentDetails。我想通过学生对象中的学生详细信息来获取主题。只是为了澄清问题!

【问题讨论】:

    标签: javascript model associations sequelize.js


    【解决方案1】:

    您应该像这样使用嵌套包含:

    Students.findAll({
        include: {
              model: db.studentDetails,
              include: [ db.subjects ]
        }
    });
    

    但是,您需要从以下模型中删除“as”键:

    models/students.js

    classMethods: {
          associate: (models) => {
            Students.studentDetails = Students.hasOne(models.f_student_details, { foreignKey: { name: 'studentId', allowNull: false } });
          }
    

    models/subjects.js

    classMethods: {
              associate: (models) => {
    Subjects.hasOne(models.student_details, { foreignKey: { name: 'subjectId', allowNull: false } });
    }
    
    }
    

    models/studentDetails.js

    classMethods: {
              associate: (models) => {
    StudentDetails.belongsTo(models.subjects, { foreignKey: { name: 'subjectId', allowNull: true } });
    
    }
    

    检查这个堆栈溢出post

    【讨论】:

    • 我会尽力回复你。
    • 谢谢。你是一个救生员!
    • 很高兴,我可以帮助你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2018-01-12
    • 2019-08-18
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多