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

时间:2019-03-08 06:44:20

标签: sequelize.js sequelize-cli

为我的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中创建event.js表?

2 个答案:

答案 0 :(得分:1)

如果实例化Sequelize并在await脚本中调用sync,也可以。

答案 1 :(得分:1)

您可以按照@Chase的说明进行操作,但是我谦虚地认为,应该为模型和迁移拆分文件。

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

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