javascript - Node.js - SequelizeDatabaseError:列“user_id”不存在
问题描述
我有一个非常简单的架构,但是当我尝试调用数据时,它会返回错误
SequelizeDatabaseError: column "user_id" does not exist
我的数据库仅包含三个表。以下是所有这些的架构文件:
用户
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('users', {
email: DataTypes.STRING,
password: DataTypes.STRING
}, {});
User.associate = function (models) {
User.hasMany(models.survey_instances)
};
return User;
};
调查实例
module.exports = (sequelize, DataTypes) => {
const SurveyInstances = sequelize.define('survey_instances', {
userId: {
field: 'user_id',
type: DataTypes.INTEGER
},
templateId: {
field: 'template_id',
type: DataTypes.INTEGER
},
fields: DataTypes.JSONB,
}, {
underscored: true,
});
SurveyInstances.associate = function (models) {
SurveyInstances.belongsTo(models.survey_templates, { foreignKey: 'templateId' })
SurveyInstances.belongsTo(models.users, { foreignKey: 'userId' })
};
return SurveyInstances;
};
调查模板
module.exports = (sequelize, DataTypes) => {
const SurveyTemplates = sequelize.define('survey_templates', {
fields: DataTypes.JSONB,
}, {});
SurveyTemplates.associate = function (models) {
SurveyTemplates.hasMany(models.survey_instances)
};
return SurveyTemplates;
};
我的数据库已填充,我通过以下方式拨打电话:
http://localhost:3000/templates?id=1
在节点中处理此端点的代码是:
app.get('/templates', authenticateToken, async (req, res) => {
const templates = await db.survey_instances.findByPk(1);
res.send(templates);
});
我是节点新手,所以错误可能很明显,但我看不到。如果有人帮助我,我将不胜感激。谢谢!
解决方案
我弄清楚了这个问题。新的 Sequelize 更新中存在一个错误,无法使该underscored: true
选项起作用。更多细节可以在这里找到。
所以我现在只使用骆驼箱而不是蛇箱。现在一切正常。
推荐阅读
- c# - 在 DataGridView 中使文本重叠
- php - 如何在背包-laravel 的注册表单中添加更多字段?
- css - Bootstrap 3 - 在 MD 上移动一列
- c# - WebClient 底层连接关闭/启用 SSL/TLS,但仅在本地机器上工作
- android - sudo su -c ls 输出末尾的额外“:”,仅在使用通配符时
- c# - 如何将派生类序列化为 Eyeshot 专有文件格式
- arrays - SwiftUI - 循环并列出文本元素中嵌套数组中的项目
- python - Pythonanwhere 更改页面布局
- python - 如何以最简单的方式对特定函数的结果进行舍入?
- oracle - Micronaut-data:未找到当前的 JDBC 连接。考虑将此调用包装在事务边界中