是否有任何与 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 5:ActiveRecord OR 查询

数据库触发器与 Rails ActiveRecord 回调的优缺点?

Rails,ActiveRecord,Squeel:检查数组中是不是存在值

Rails ActiveRecord关系无效外键错误

ActiveRecord Rails将created_at时间戳转换为查询所在的时区

为此使用啥 Rails-ActiveRecord 关联?