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

Sequelize.js 如何从sequelizejs模型定义创建数据库表?,sequelize.js,sequelize-cli,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, },

对于我的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
表?

如果实例化Sequelize并调用
event.js
脚本,您也可以这样做

如果实例化Sequelize并调用
event.js
脚本,您也可以这样做

你可以像@Chase提到的那样做,但在我看来,你应该为模型和迁移拆分文件

通过这种方式,您将在模型文件中表示模型的当前状态(与您已有的一样),并在文件中表示数据库的历史状态


同步将始终删除所有存在的表,并使用模型从头开始创建它们。上面提到的解决方案确实会创建或更新表(虽然它会先删除然后创建),但在这个过程中会丢失所有数据。迁移通常是首选。

您可以按照@Chase提到的那样做,但在我看来,您应该为模型和迁移拆分文件

通过这种方式,您将在模型文件中表示模型的当前状态(与您已有的一样),并在文件中表示数据库的历史状态


同步将始终删除所有存在的表,并使用模型从头开始创建它们。上面提到的解决方案确实会创建或更新表(虽然它会先删除然后创建),但在这个过程中会丢失所有数据。通常首选迁移。

只有在
选项中才会删除表。在
sync()
中,force
设置为true,否则如果不存在,sequelize将创建表,如果表已存在,则它将忽略架构更改。只有在
选项中设置了
时,它才会删除表。在
sync()
中,force
设置为true,否则sequelize将创建不存在的表,如果表已存在,则它将忽略架构更改。