【问题标题】:Saving custom datatypes in Firebase Firestore在 Firebase Firestore 中保存自定义数据类型
【发布时间】:2019-07-15 15:40:52
【问题描述】:

我有这个需要存储在 Firebase Firestore 中的类结构。

class A {
 int i = 3;
}
class B {
 A xa = new A();
 A ya = new A();
}
class C {
 B b = new B();
 String name = "hi";
}

C c1 = new C();

我想将值 c1 存储在文档中。
这样做的一种方法是这样的。

db.collection("Cs").document("c1").set({
  "b": {
    "xa": {
      "i": 3,
    },
    "ya": {
      "i": 3,
    },
  },
  "name": "hi",
});

还有另一种方法。

ref1 = db.collection("Cs").document("c1");
ref1.set({"name": "hi"});
ref2 = ref1.collection("B").document("b").collection("A");
ref2.document("xa").set({"i": 3});
ref2.document("xb").set({"i": 3});

谁能告诉我这样做的最佳方法是什么。如果还有其他更好的方法,请您说明一下吗?

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    这两种方法之间存在巨大差异。在第一个中,您将这些对象添加到单个文档下方,而在第二个中,您使用嵌套集合。

    谁能告诉我这样做的最佳方法是什么。

    第一种方法或第二种方法都更好。我不确定您要实现什么目标,但通常您应该为要执行的查询设计数据库架构。

    【讨论】:

    • 我有一个像上面这样的类结构。我需要一种将其添加到数据库的方法。我可能需要通过iclass A 中的变量)查询数据。
    • 要添加到数据库中,只需使用set() 方法添加这些对象。如需通过i查询,可使用db.collection("Cs").whereEqualTo("b.va.i", 3);。我建议您也看看Firebase Realtime Database,可能有助于更轻松地实现第一个解决方案。
    • this example的帮助下,我也可以从第二种方法中查询数据。但我需要知道的是,就标准而言,什么更好。 (软件架构方面。)
    • 了解 Firestore 中的所有内容都与读写次数有关,第一个解决方案更有意义,因为所有内容都存在于单个文档下。第二种解决方案意味着写入多个集合,这在术语上意味着更多的读取操作。因此,我认为第一个解决方案是继续进行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-09
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多