【问题标题】:Not retrieving CurrentUser specific data from Firebase - Flutter不从 Firebase 检索 CurrentUser 特定数据 - Flutter
【发布时间】:2021-05-15 03:16:54
【问题描述】:

我在从 Firebase 检索某些数据时遇到问题,我尝试了很多方法。例如,我想从当前用户那里获取 city 数据。我没有获取城市名称,而是在城市监视列表中获取“查询快照”值。

  void addToFb() async {
final User user = FirebaseAuth.instance.currentUser;
final uid = user.uid;
final city = await FirebaseFirestore.instance
    .collection('Users')
    .doc(uid)
    .collection("city")
    .get();


dbRef.push().set({
  "name": nameController.text,
  "author": authorController.text,
  "city": city,
  "category": dropdownValue,
  "publisher": publisherController.text,
  "years": yearsController.text,
  "info": infoController.text,
  "ownerid": uid

【问题讨论】:

  • 您的代码正在写入实时数据库,但它正在从 Cloud Firestore 读取。虽然这两个数据库都是 Firebase 的一部分,但它们是完全独立的,有自己的 API,来自一个数据库的数据不会显示在另一个数据库中。
  • 如果我理解正确@frank,我需要将 FirebaseFirestore 更改为 FirebaseData?
  • 您需要更改其中一个,以便读取和写入在同一个数据库中进行。是哪一个,由您决定。如果您需要帮助选择,请考虑firebase.google.com/docs/database/rtdb-vs-firestore

标签: flutter dart google-cloud-firestore firebase-authentication


【解决方案1】:

您的代码正在您的用户文档下寻找一个名为 city 的集合。但是,听起来您只需要文档中的 city 字段。

试试这个:

final userDocument = await FirebaseFirestore.instance
    .collection('Users')
    .doc(uid)
    .get();
    
final userData = userDocument.data();
final city = userData['city'];

【讨论】:

  • 谢谢,我已经尝试过您的代码,但现在我得到 没有为类“InkResponse State”定义吸气剂错误。这是出乎意料的,而是功能,它负责捕捉它没有出现的错误并显示无限加载动画@David Waiting
【解决方案2】:

您需要先确定您使用的是实时数据库还是 Firestore。

FirebaseDatabase 指的是 Firebase 实时数据库,没有集合。它的用法如下所示:

FirestoreDatabase().reference('Users')

FirebaseFirestore 可能是您要查找的内容,因为它指的是 Firestore 并具有集合。

FirebaseFirestore.instance.collection('Users')

【讨论】:

  • 感谢您的宝贵时间。但是现在当我修复它时,我在观察列表“查询镜头”上得到 city 值,而不是城市名称的实际值。
猜你喜欢
  • 2020-01-15
  • 2019-10-01
  • 2020-07-21
  • 2018-12-09
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多