首页 > 解决方案 > Sequelize 关联函数没有效果

问题描述

我使用目前的 Sequelize 版本并尝试在两个模型之间建立关联。实际上应该很简单,因为 Sequelize 提供hasManybelongsTo.

但是这个电话根本没有效果。我尝试了一个新的 SQL DB。表本身是创建的,只是没有任何外键。

在此处输入图像描述

数据库控制器

const userModel = require('../model/user')
const subjectModel = require('../model/subject')
const database = require('../db/database').sequeliceInstance

async function setupAssociations () {
  await database.sync()

  // user + subject
  userModel.hasMany(subjectModel)
  subjectModel.belongsTo(userModel)

  // subject and topic
  subjectModel.hasMany(topicModel)
  topicModel.belongsTo(subjectModel)

  // topic and question
  topicModel.hasMany(questionModel)
  questionModel.belongsTo(topicModel)

  // question and answer
  questionModel.hasMany(answerModel)
  answerModel.belongsTo(questionModel)
  return Promise.resolve()
}

用户.js

const Sequelize = require('sequelize')
const db = require('../db/database').sequeliceInstance

const user = db.define('user', {
  // attributes
  firstName: {
    type: Sequelize.STRING,
    allowNull: false
  },
  lastName: {
    type: Sequelize.STRING,
    allowNull: false
  },
  email: {
    type: Sequelize.STRING,
    allowNull: false
  },
  title: {
    type: Sequelize.STRING,
    allowNull: false
  },
  password: {
    type: Sequelize.TEXT,
    allowNull: false
  }
})

module.exports = user

主题.js

const Sequelize = require('sequelize')
const db = require('../db/database').sequeliceInstance

const subject = db.define('subject', {
  // attributes
  subjectName: {
    type: Sequelize.TEXT,
    allowNull: false
  }
})

module.exports = subject

标签: javascriptsequelize.js

解决方案


我找到了解决方案。

await database.sync()必须在函数的最后调用。


推荐阅读