包含选项不适用于belongsTo和Sequelize

时间:2019-09-04 15:35:03

标签: javascript express sequelize.js

我正在尝试创建一个端点,通过该端点可以访问研究所数据和相关主题数据。我试图通过在findAll命令上使用include选项来做到这一点。

模型定义:

sequelize.define("institutes",
  {
    instituteId: {
      type: DataTypes.STRING,
      unique: true,
      primaryKey: true
    }
    ,instituteName: {
      type: DataTypes.STRING,
      unique: true
    }
}

sequelize.define("subjectA", {
  instituteId: {
    type: DataTypes.STRING,
    unique: true,
    references: { model: "institutes", key: "instituteId" }
  }
  ,subjectTeacher: {
    type: DataTypes.STRING
  }
}

查询定义:

const {institutes} = require("../models")
const {subjectA} = require("../models")

module.exports = {

  async instituteData (req,res) {
    try {
      const info = await institutes.findAll({include: [{model: "subjectA", required: true}], limit: 12})
      res.send(info)
    } catch (err) {
      res.send({message: "This request did not work!"})
    }
  }
}

我还在项目的其他位置定义了subjectA.belongsTo(institutes, { foreignKey: 'instituteId' , foreignKeyConstraint:true });

结果应该是类似SELECT * FROM institutes INNER JOIN subjectA on institutes.instituteID = subjectA.instituteId的SQL查询,但到目前为止,该查询未返回任何内容。如果我省略了include选项,则查询工作正常。

0 个答案:

没有答案