CNode

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

问答
Xxumjs8623发布于9 年前最后回复8 年前14 回复17074 浏览0 收藏

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

查看回复

回复 (14)

A
axetroy#1·9 年前

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

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

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

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

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

M
Molunerfinn#2·9 年前

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

X
xumjs8623#3·9 年前

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

Y
yuedun#4·9 年前

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

Model.sync({ alter: true })

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

Y
yuedun#7·8 年前

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

Y
yuedun#8·8 年前

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

T
TimLiu1#9·8 年前

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

T
TimLiu1#10·8 年前

@yuedun

A
a69694510#11·8 年前

你要做字段预留

A
Ander456#12·8 年前

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

Z
zhangmingfeng#13·8 年前

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

来自酷炫的 CNodeMD

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

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

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