是否有任何与 rails ActiveRecord 迁移相当的 Firestore 数据库模式迁移概念?
Posted
技术标签:
【中文标题】是否有任何与 rails ActiveRecord 迁移相当的 Firestore 数据库模式迁移概念?【英文标题】:Are there any concepts for firestore db schema migrations comparable to rails ActiveRecord migrations? 【发布时间】:2019-04-28 17:25:53 【问题描述】:我们基于 Firestore 数据库的模型会自然演变。现在我们想将所有现有文档更新为新的(隐式)模式。
是否有任何工具支持这一点或最佳做法是什么。我希望有一个可与 Rails ActiveRecord 迁移相媲美的概念。
【问题讨论】:
【参考方案1】:目前,对于 Firestore,您必须编写自己的代码才能将所有现有文档更新为新的(隐式)架构。几周前,我在一篇文章中读到,Firestore 团队正在努力让这一切在未来变得更容易。
如果您的新架构需要对整个数据库进行一些更改,您还可以考虑使用Firestore import / export system,它允许您将数据转储到 GCS 存储桶中。它不是您可能预期的 JSON 格式,但它与 Cloud Datastore 使用的格式相似,因此我认为可以帮助您解决此问题。
【讨论】:
一切都好吗,我可以帮助您了解其他信息吗? 如果您能提供指向您提到的 fitebase 帖子的链接,将会很有帮助。 另外,既然我确定我不是唯一一个有这个问题的人,我希望已经解决了这个问题的人可以提供一些见解。由于这些原因,我没有接受您的回答。 This 是帖子。那时甚至连导入/导出功能都不存在。是关于复制记录,但在添加属性的情况下适用相同的规则。 当我需要向集合中的所有文档添加一个名为available
的布尔类型文档时,我遇到了类似的问题。所以我通过以下方式解决了这个问题。我创建了一个新版本的应用程序,一旦用户打开应用程序,它就会添加这个新属性,默认值为 true。在 3 周内,几乎 85% 的用户可以使用这个新选项。所以这就是我回答你的问题的原因,因为我有同样的问题,我以这种方式解决了它。但是目前不存在像 rails ActiveRecord 这样的选项。希望您重新考虑并接受我的回答。【参考方案2】:
我找不到 Firestore 架构迁移工具,所以我写了fireway。目前非常简单(不支持逆向迁移),但对于我的用例来说已经足够了。
这是一个迁移脚本示例:
// migrations/v0.0.1__example.js
module.exports.migrate = async (firestore) =>
await firestore.collection('name').add(key: 'value');
;
然后运行fireway migrate
来迁移您的默认项目。
【讨论】:
以上是关于是否有任何与 rails ActiveRecord 迁移相当的 Firestore 数据库模式迁移概念?的主要内容,如果未能解决你的问题,请参考以下文章
数据库触发器与 Rails ActiveRecord 回调的优缺点?
Rails,ActiveRecord,Squeel:检查数组中是不是存在值