我正在使用 node.js 服务器,并将 MongoDB 与 node-mongo-native 一起使用。我正在寻找一个类似于 Rails 迁移的数据库迁移框架。有什么建议吗?
2 回答
我不知道用于执行 MongoDB 迁移的特定本机 Node.js 工具.. 但您可以选择使用用其他语言编写的工具(例如,Mongoid Rails Migrations)。
值得注意的是,MongoDB 中的Schema 设计和数据建模方法与关系数据库不同。特别是,集合不需要具有一致或预先声明的模式,因此不需要添加和删除列等许多传统迁移操作。
但是.. 涉及数据转换的迁移仍然很有用。
如果您的应用程序期望数据采用某种格式(例如,您希望将“名称”字段拆分为“名字”和“姓氏”),如果使用迁移工具的想法编写,您可以使用多种策略在另一种编程语言中并不吸引人:
- 处理应用程序逻辑中的数据差异,因此新旧数据格式都是可接受的(也许“升级”记录以匹配更新时的新格式)
- 编写一个脚本来进行一次数据迁移
- 为节点迁移贡献 MongoDB 助手
我刚刚写完一个基于 node-mongo-native 的基本迁移框架:https ://github.com/afloyd/mongo-migrate 。它将允许您向上和向下迁移,以及向上/向下迁移到特定的修订号。它最初是基于 node-migrate 的,但显然需要进行一些更改才能使其工作。
修订历史存储在 mongodb 中,而不是像 node-migrate 这样的文件系统上,允许使用单个数据库在同一个项目上进行协作。否则,每个运行迁移的开发人员都可能导致迁移对数据库运行多次。
迁移本身是基于文件的,也有助于在单个项目中进行协作,其中每个开发人员都(或不)使用相同的数据库。因此,当每个开发人员运行迁移时,所有尚未针对他/她的数据库运行的迁移文件都将运行。
查看文档以获取更多信息。