我是 TypeScript 的新手,我正在尝试使用 Sequelize 和 Sequelize Auto 来生成数据库模型,然后使用它们进行查询。
到目前为止,模型已经生成,但是当我尝试实际使用它们时,出现错误。
/* jshint indent: 2 */
// tslint:disable
import * as sequelize from 'sequelize';
import {DataTypes} from 'sequelize';
import {settings_user_tblInstance, settings_user_tblAttribute} from './db';
module.exports = function(sequelize: sequelize.Sequelize, DataTypes: DataTypes) {
return sequelize.define<settings_user_tblInstance, settings_user_tblAttribute>('settings_user_tbl', {
id: {
type: DataTypes.BIGINT,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
user_id: {
type: DataTypes.BIGINT,
allowNull: true,
references: {
model: 'user_tbl',
key: 'id'
},
unique: true
},
notification_email_enabled: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: true
}
}, {
tableName: 'settings_user_tbl'
});
};
但是,在尝试使用此模型时,出现以下错误:
return sequelize.define<settings_user_tblInstance, settings_user_tblAttribute>('settings_user_tbl', {
src/models/tag_group_tbl.ts:7:70 - error TS2709: Cannot use namespace 'DataTypes' as a type.
module.exports = function(sequelize: sequelize.Sequelize, DataTypes: DataTypes) {
我对这两个错误都很迷茫 - 看起来 DataTypes 定义正确吗?这就是 Sequelize Auto 生成文件的方式 - 这样做是否不正确?
为什么它只需要 0 个参数而不是 2 个参数?
这可能是版本不兼容的事情吗?
很抱歉这个毫 headless 绪的问题 - 我真的刚刚开始使用 TypeScript,我不完全确定这里发生了什么。
最佳答案
有人拥有与 sequelize-auto
存储库完全相同的 issue 并最终成为 forking 存储库,他最近似乎很活跃:值得一试他的版本,看看是否能解决问题,他实际上在原始存储库中关闭了问题
但我建议您尝试切换到 Typeorm 和 Typeorm-model-generator,因为它从第一天起就是面向 Typescript 的。
关于javascript - 全新的 TypeScript,尝试使用 Sequelize,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59314899/