【问题标题】:Are there any concepts for firestore db schema migrations comparable to rails ActiveRecord migrations?是否有任何与 rails ActiveRecord 迁移相当的 Firestore 数据库模式迁移概念?
【发布时间】:2023-04-01 16:38:02
【问题描述】:

我们基于 Firestore 数据库的模型会自然演变。现在我们想将所有现有文档更新为新的(隐式)模式。

是否有任何工具支持这一点或最佳做法是什么。我希望有一个可与 Rails ActiveRecord 迁移相媲美的概念。

【问题讨论】:

    标签: google-cloud-firestore schema-migration


    【解决方案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 来迁移您的默认项目。

    【讨论】:

      猜你喜欢
      • 2013-09-24
      • 2012-01-11
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2020-01-10
      • 2011-07-29
      • 1970-01-01
      • 2012-04-11
      相关资源
      最近更新 更多