javascript - Sequelize 关联函数没有效果
问题描述
我使用目前的 Sequelize 版本并尝试在两个模型之间建立关联。实际上应该很简单,因为 Sequelize 提供hasMany
和belongsTo
.
但是这个电话根本没有效果。我尝试了一个新的 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
解决方案
我找到了解决方案。
await database.sync()
必须在函数的最后调用。
推荐阅读
- javascript - 我如何阅读 icy-url nodejs?
- tensorflow - 评估预训练模型的问题
- c++ - 如何始终如一地识别音频控制器 PCI 设备?
- xpath - 查找包含文本的子节点的父节点
- python - 在整个数据框中查找第一列元素并返回每行前面的第一列值(熊猫)
- reactjs - JSON 服务器 更新 JSON 文件
- php - 使用 PHP 和 MySQL 限制每个用户的预订数量
- android - 如何验证我的房间数据库中是否存在用户名和密码?
- javascript - 所有索引在渲染后立即在控制台记录 - React
- list - 在 Haskell 中更改某个值后如何返回整个矩阵?