【问题标题】:Query Documents that has type reference in Firestore在 Firestore 中查询具有类型引用的文档
【发布时间】:2018-09-01 14:48:52
【问题描述】:

根据Cloud Firestore=>Data type 文档,键入reference 在NoSQL 世界中充当外键。但是当我在 Fluter/Dart 中查询它时。 Firestore 中的数据库。

[收藏]

注意:DocumentOne的数据类型都是reference

  1. CollectionWithReference
    • DocumentOne
      • FKOne/doc001
      • FKTwo/doc002
  2. FKOne
    • doc001
      • "someData": '只是一些数据'
  3. FK二
    • doc002
      • "anotherData": '只是另一个数据'

示例代码:

Firestore.instance.collection('CollectionWithReference').snapshots()
  .listen((data) => data.documents.forEach((document) => print(document.data)));

输出

{FKOne:“DocumentReference”实例,FKTwo:[“DocumentReference”实例,“DocumentReference”实例,“DocumentReference”实例]}

【问题讨论】:

  • 那么你的问题是什么?
  • 正如标题所说,我想查询该文档中引用的数据,但它给了我Instance of 'DocumentReference'。我现在正在努力解决这个问题。

标签: firebase dart flutter google-cloud-firestore


【解决方案1】:

您问题中的输出是意料之中的
因为您的引用被解析为对象print 只会打印出Instance of 'DocumentReference'

Here you can take a look at the class DocumentReference,其中包含有关您的参考的所有必要数据。
在下面的代码中,我将打印出每个引用的 path(它是每个 DocumentReference 对象的 getter):

Firestore.instance.collection('CollectionWithReference').snapshots().listen((data) {
  data.documents.forEach((document) {
      print(document.data['FKOne'].path);
      document.data['FKTwo'].forEach((documentReference) => print(documentReference.path));
  });
});

【讨论】:

  • 谢谢。我没有深入研究 Firestore 如何处理颤振,我依赖于 Visual Studio Code 中 DartCode 提供的 Intellisense。它没有弹出path
  • @Clueless 因为它无法知道您的数据类型。 指定数据的数据类型。如果您需要代码建议,可以执行以下操作:document.data['FKOne'] as DocumentReference.
猜你喜欢
  • 2018-06-04
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 2018-05-09
  • 2020-12-05
  • 2013-11-23
  • 1970-01-01
相关资源
最近更新 更多