如何在Firestore中组织相关的临时和固定数据?

时间:2019-03-24 21:45:16

标签: java android firebase google-cloud-firestore

我不知道如何在Firestore中实现这种数据结构。

我有这样的结构:

Firestore-root
   |
   --- liturgia (collection)
   |     |
   |     --- lh (documents)
   |          |
   |          --- oficio (collection)
   |                |
   |                --- 03070101 (documents)
   |                        |
   |                        --- himno: "Today himno for today oficio"
   |                        |
   |                        --- read: "Today read for today oficio"
   |
   |                --- 03070102 (documents)
   |                        |
   |                        --- himno: "Today himno for today oficio"
   |                        |
   |                        --- read: "Today read for today oficio"
   |
   |                --- 09070325 (documents)
   |                        |
   |                        --- himno: "Today himno for today oficio"
   |                        |
   |                        --- read: "Today read for today oficio"
   |
   |          --- laudes (collection)
   |                |
   |                --- 03070101 (documents)
   |                        |
   |                        --- himno: "Today himno for today laudes"
   |                        |
   |                        --- read: "Today read for today laudes"
   |
   |                --- 03070102 (documents)
   |                        |
   |                        --- himno: "Today himno for today laudes"
   |                        |
   |                        --- read: "Today read for today laudes"
   |
   |                --- 09070325 (documents)
   |                        |
   |                        --- himno: "Today himno for today laudes"
   |                        |
   |                        --- read: "Today read for today laudes"

oficiolaudes中,有文档具有固定的内容,该内容永不更改,我需要根据日期使用该内容。

例如:

我有任何日期,在这个日期,需要一个完整的内容。例如,当我需要显示oficio(或laudes)的今天内容时:

  • 对于2019-03-25,我需要09070325的内容
  • 对于2019-03-26,我需要03070102的内容

    ...

  • 对于2020-03-25,我需要09070325的内容

  • 对于2020-03-26,我需要03070103的内容

    ...

  • 对于2021-03-25,我需要03070101的内容

我想到了一种根据日期将固定内容关联起来的结构,但是我不知道该怎么做。

在我的应用程序中,将采用当前日期,并且必须基于此数据找到oficiolaudes等的固定内容。

例如,在2019-03-252020-03-25中需要内容09070325,但是在2021-03-25中需要内容03070101

20190325
    oficio : 09070325
    laudes : 09070325

20190326
    oficio : 03070102
    laudes : 03070102

20200325
    oficio : 03070101
    laudes : 03070101

20210325
    oficio : 03070101
    laudes : 03070101

如何将我的数据结构组织为:

  • 不必更新固定内容文档
  • 将固定内容与每年的日期
  • 联系起来
  • 根据消耗最少资源的给定日期获取固定内容

1 个答案:

答案 0 :(得分:1)

我能想到的最简单的解决方案是为每个文档使用String类型的private async void StartButton_Click(object sender, EventArgs e) { TcpListener listener = new TcpListener(IPAddress.Any, int.Parse(ServerPorttextBox.Text)); listener.Start(); client = await listener.AcceptTcpClientAsync(); STR = new StreamReader(client.GetStream()); STW = new StreamWriter(client.GetStream()); STW.AutoFlush = true; backgroundWorker1.RunWorkerAsync(); backgroundWorker2.WorkerSupportsCancellation = true; } 属性,并稍微简化您的结构。因此可能的结构可能是:

date

要获取今天的文档,只需使用以下查询:

Firestore-root
   |
   --- liturgia (collection)
         |
         --- 03070101 (document)
              |
              --- himno: "Today himno for today oficio"
              |
              --- read: "Today read for today oficio"
              |
              --- date: "20190325"
              |
              --- length: "1h"

今天是FirebaseFirestore rootRef = FirebaseFirestore.getInstance(); CollectionReference liturgiaRef = rootRef.collection("liturgia"); Query query = liturgiaRef.whereEqualTo("date", today); 。就是这样!

编辑:

根据您的评论,而不是将数据存储为20190325,而仅将其存储为date: "20190325"。这意味着无论年份是多少,都可以根据月份和日期进行查询。在这种情况下,今天只有date: "0325"。这样,它将在一年中都有效。

编辑2:

根据OP的评论,我们同意一种可能的解决方案是创建一个将日期和内容相关联的日历节点。