如何从 sequelizejs 模型定义创建数据库 table?

How to create database table from sequelizejs model definition?

我的 nodejs 项目用 sequelizejs 定义了几个模型。这是 event.js 中的事件模型示例:

const Event = db.define('event', {
    id: {type: Sql.INTEGER,
         primaryKey:true,
         min: 1},
    name: {type: Sql.STRING,
           min:2,
           allowNull: false,
        }, 
    event_info: {type: Sql.JSON},
    current_step: {type: Sql.STRING},
    customer_id: {type: Sql.INTEGER},
    access_list: {type: Sql.JSON},
    event_snapshot: {type: Sql.JSON},
    event_category_id: {type: Sql.INTEGER,
            },
    status: {type: Sql.STRING,
             isIn: ['active', 'cancelled', 'aborted', 'completed']},
    last_updated_by_id: {type: Sql.INTEGER},
    createdAt: Sql.DATE,
    updatedAt: Sql.DATE
}); 

有没有办法在命令行中从 event.js 创建 event table?

如果您实例化 Sequelize 并在 event.js 脚本中调用 sync,您也可以。

您可以像@Chase 提到的那样进行操作,但以我的拙见,您应该为模型和迁移拆分文件。

这样,您将在模型文件中表示模型的当前状态(就像您拥有的模型一样),在 Migration 文件中表示数据库的历史状态。

同步将始终删除任何存在的 table 并使用模型从头开始创建它们。提到的解决方案确实会创建 table 或更新它(认为它会先删除然后再创建)但是您将在此过程中丢失所有数据。通常首选迁移。