在egg.js里操作Sequelize,如何添加一个字段?
发布于 5 年前 作者 darrenliuwei 6156 次浏览 来自 问答

按照这篇egg.js文档:https://eggjs.org/zh-cn/tutorials/sequelize.html 确实可以操作Sequelize了,但是我有一个疑问?

那就是后期如果需要添加一个字段该怎么办?

总不能每次添加新的字段时,然后把整个数据库全部删掉,再重新开发?

15 回复

sequelize的migrations可以添加字段.我们项目中没用,都是自己写的sql来加字段

结合 migration addColumn

难道不应该是手动操作数据库添加字段么?

@jxycbjhc 哈哈,谢谢,看来还是要英文好啊,我找的一些中文文档都没有翻译API,这个官方API英文文档好详细啊

@waitingsong 如果手动操作数据库的话,那 sequelize 就没有意义了吧?

@darrenliuwei sequelize是ORM库,加字段手动,但是你还需要其他CRUD的操作

@a1292717155 如果是手动的话,那怎样进行版本管理呢? 比如在做一个开源软件,我怎样让别人也知道我每次增加了哪些字段呢?然后进行升级

ddl.sql

ALTER TABLE tb ADD COLUMN ....

文本文件自然是可以版本管理的。别人也可以重复你的操作。

@darrenliuwei 项目中保存一个alert-tabl.sql的文件,每次修改都会记录sql语句和修改原因

@waitingsong 好吧,这方面不是很了解。我之所以用sequelize,也是因为它比较方便版本管理才用的。

不过我也很好奇那种不用ORM库,直接操作数据库的是怎么进行版本管理的。 我也挺希望能直接操作数据库写SQL,这样就不用去学sequelize的语法了。

不知道有没有这方面的文章介绍

@darrenliuwei 所有orm都是坑货。等你项目足够复杂就知道了。 如果你项目肯定不会那么复杂,还不如手写sql或者使用query builder (比如knex)。

@waitingsong 其实我也非常希望直接写SQL,但是我没有这方面的版本管理经验,我觉得ORM最大的优点就是非常非常容易实现数据库版本管理。

难道你有时常回滚、前滚数据库表结构的需求么……

@waitingsong 好像越说越是这么个道理,我现在开始准备用 egg-mysql 了,准备了解一下直接操作数据库的开发模式,谢谢啦

@darrenliuwei 中文文档质量一直就不怎么样,有些写的就是为了KPI,要恰饭的啊。。。

回到顶部