跳到主要内容
CNode

使用sequelize操作数据库,后期如何新增字段问题

问答
Xxumjs8623发布于 9 年前最后回复 8 年前
14171210

请问一下,使用sequelize来操作数据库,但是项目进行到后期肯定会有字段的新增,那么这个时候一般都是怎么操作的呢,是自己手动去数据库新增,然后修改sequelize定义的模型么,还是有其他的方法

查看回复

回复 (14)

W
wwervin72#148 年前
引用 yuedunModel.sync({ alter: true }); 模型新增字段会自动在数据库中添加

@yuedun 我也加了Model.sync({ alter: true });,但是在添加associations的时候,就一直报错: Unhandled rejection SequelizeDatabaseError: Deadlock found when trying to get lock; try restarting transaction,只有删掉这一行才行。

Z
zhangmingfeng#138 年前

https://github.com/zhangmingfeng/easy-migrate 希望可以帮到你

来自酷炫的 CNodeMD

A
Ander456#128 年前

所以我理解 要想后期增加字段 并且同步到数据库 就这样么 // sync the models to db sequelize .sync({alter: true}) .then(() => console.log('Completed!')) 有没有大佬解惑

A
a69694510#118 年前

你要做字段预留

T
TimLiu1#108 年前

@yuedun

T
TimLiu1#98 年前

sequelize.sync({force: true}) 把数据删除了,但是没有新增我要的那个字段

Y
yuedun#88 年前

@xvrzhao O(∩_∩)O哈哈~,修正了

Y
yuedun#78 年前

@xvrzhaoUser.sync({alter: true}),不是sequelize.sync({alter: true}),如果是sequelize请用sequelize.sync({force: true})(慎用)

Model.sync({ alter: true })

很有用,在每一个Model返回之前添加sync,启动时候会自动修改适配至对应字段。

Y
yuedun#49 年前

Model.sync({ alter: true }); 模型新增字段会自动在数据库中添加

X
xumjs8623#39 年前

好的,谢谢,我研究研究,就是感觉有点繁琐。

M
Molunerfinn#29 年前

同楼上,需要走migration。这是常规流程。

A
axetroy#19 年前

ORM一般都有sync操作。在程序运行时调用,把model跟数据表同步。

而sequelize需要你手动定义migration(数据库迁移)。

Up定义迁移(升级),Down定义回滚,回滚一般用不到。

然后写配置文件,先升级本地的数据库表,没问题后,再升级线上的。 文档: http://docs.sequelizejs.com/manual/tutorial/migrations.html

当然我觉得sequelize的migration并不好用。如果新增的字段,需要依赖于其他字段,那就没办法了,自己手写个脚本逐个改吧

参与回复

登录后即可参与回复。登录