从firebase迁移到firestore

时间:2018-04-22 06:59:53

标签: android firebase firebase-realtime-database google-cloud-firestore

我正在开发一个包含USER和EVENT的应用。 每个活动都有几个用户,每个用户都有几个活动。

在Firebase中,事件和用户都是“详细信息”键(请参阅下面的json),并且这些详细信息是重复的,因此所有事件用户都有事件的详细信息,所以在我的主要活动中我有一个回收站视图,显示那些事件很容易(对于用户在事件活动中列出的方式也是如此)。 要同步所有这些重复项,我使用firebase函数。

现在我想移动ti firestore,但我不确定它应该如何。

根据我的看法,我可以在事件文档中包含用户ID列表,然后使用user.id = current_user_id查询所有事件。 问题是我每个用户有更多的字段(费用,我想添加更多)所以要么每个用户都有子集合,要么有更复杂的列表。

我可以根据子集合ID查询事件吗?

我将不胜感激。

目前的Json:

    {
      "events" : {
        "-L7v0K***" : {
          "average" : 110,
          "details" : {
            "date" : {
              "date" : 1520354933426
            },
            "location" : "Tel Aviv",
            "name" : "test"
          },
          "items" : {},
          "require_transactions" : [ {}],
          "totalexpenses" : 220,
          "users" : {
            "ARKuwgrDHcNnXHoPlCgIBXOObjD3" : {
              "details" : {
                "uid" : "ARKuw***",
                "userEmail" : "r***g@walla.com",
                "username" : "R** G***"
              },
              "expenses" : 20
            },
            "pDFtk***" : {}
        },
        "-L84Gg***" : {}
        }
      },
      "users" : {
        "ARKuw***" : {
          "details" : {
            "uid" : "ARKuwg***",
            "userEmail" : "r***g@walla.com",
            "username" : "R** G***"
          },
          "events" : {
            "-L7v0Kx***" : {
              "date" : {
                "date" : 1520354933426
              },
              "location" : "Tel Aviv",
              "name" : "test"
            },
            "-L97_3***" : { }
        },
        "TAJK6***" : {}
        }
      }
    }

1 个答案:

答案 0 :(得分:0)

Firebase与firestore非常接近,我还使用firebase实时启动所有内容并移至firestore,以进行更复杂的查询。

因此,据我所知,您将拥有两个主要集合,您可以通过以下方式创建它们:

re= re.findall('<lyric><!\[CDATA\[(.*)\]\]></lyric>',XMLstring)

在内部用户中,您将拥有一个名为events的子集合来触发特定用户拥有的所有事件,因此它将如下所示:

firebase.firestore().collection('users')
firebase.firestore().collection('events')

例如,要进行查询以获取特定用户参加的所有事件,您可以键入:

firebase.firestore().collection('users').doc(userId).collection('events')

(在这里你可以做限制过滤器,&#39; where&#39;,byId ... by&#39; field等于&#39; ...所有这些都是文档)

这将返回他参加的集合中的所有eventsId。

记得按比例思考以降低成本。 如果您可以解释更多您需要的任务,我可以在解决方案中工作。 火库的文档很容易。