首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Sequelize:在生产环境中更改模型架构

Sequelize:在生产环境中更改模型架构
EN

Stack Overflow用户
提问于 2013-07-18 03:29:41
回答 2查看 24.4K关注 0票数 26

我们使用的是orm sequelize.js,并定义了如下模型:

module.exports = function(sequelize, DataTypes) {
    var Source = sequelize.define('Source', {
        name: {
            type: DataTypes.STRING, 
            allowNull: false, 
            unique: true
        }
    }, {
        paranoid: true
    });

    return Source;
};

这将部署到生产环境中,并使用sequelize.sync同步到数据库。下一步,我们添加一个参数:

module.exports = function(sequelize, DataTypes) {
    var Source = sequelize.define('Source', {
        name: {
            type: DataTypes.STRING, 
            allowNull: false, 
            unique: true
        }, 
            location: {
                    type: DataTypes.STRING
            }
    }, {
        paranoid: true
    });

    return Source;
};

但是,在部署到生产环境时,sequelize.sync不会添加此新参数。这是因为sync做了一个:

CREATE TABLE IF NOT EXISTS

并且如果表存在,则不实际更新模式。这是noted in their documentation

唯一的选择似乎是{ force: true },但是这对于生产数据库是不合适的。

有人知道在需要更改时如何正确更新模式吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-23 11:54:09

您希望实现Sequelize迁移:

http://docs.sequelizejs.com/manual/tutorial/migrations.html

这些将使您能够在已知状态之间转换开发人员数据库、临时数据库和生产数据库。

票数 28
EN

Stack Overflow用户

发布于 2019-08-20 20:09:12

一种更快的方法是使用{alter: true}选项。

参考:https://sequelize.org/master/class/lib/sequelize.js~Sequelize.html#instance-method-sync

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17708620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档