我是 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 存储库,他最近似乎很活跃:值得一试他的版本,看看是否能解决问题,他实际上在原始存储库中关闭了问题

但我建议您尝试切换到 TypeormTypeorm-model-generator,因为它从第一天起就是面向 Typescript 的。

关于javascript - 全新的 TypeScript,尝试使用 Sequelize,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59314899/

10-12 00:06
查看更多