如何在 Firestore 中搜索值
Posted
技术标签:
【中文标题】如何在 Firestore 中搜索值【英文标题】:How to search a value in Firestore 【发布时间】:2019-09-07 19:56:29 【问题描述】:我的 Firestore 数据库看起来像这样
- user
- (document id)
- userId: Rsa245156.....
- username: user67
- age: 23
- address: Flamboyan Street No. 24
- picture_path: ......
我从 Firebase Auth 中的 userId 创建了一个 userId,因此当登录的用户打开配置文件选项卡时,应用程序将在 Firestore 数据库中查找与登录的用户 userId 相同的 userId,并加载与该 userId 关联的所有字段。
问题是,我如何找到相同的 userId,并加载所有字段或仅加载“用户名”字段?我用颤振
【问题讨论】:
我已经按照这个方法***.com/q/48937864/10094689但是没有为类'Function'定义'listen' @anangfaturrohman 是的,你是对的。那个答案是不正确的。我在那里更新了它。它现在应该可以工作了。 Firestore queries on Flutter的可能重复 谢谢,这个方法会检查每个文件吗? 您使用的是实时数据库还是云数据库? 【参考方案1】:您可以使用当前用户数据(电子邮件)来实现。 orderByChild 选择字段和equalTo方法比较值。
我希望以下示例对您有更多帮助。
FirebaseUser user = await FirebaseAuth.instance.currentUser(); // get the current users details
DatabaseReference ref = FirebaseDatabase.instance.reference();
ref.child('user')
.orderByChild('userId')// userId contain the email id of users
.equalTo(user.email) // if you login your user using email ID
.onValue
.listen((event)
DataSnapshot data = event.snapshot;
var keys = data.value.keys;
var todo = data.value;
for (var key in keys)
_email= todo[key]['userId']; // get the email id
);
【讨论】:
谢谢,我试试【参考方案2】:您想如何使用 Firestore,您可以使用下面的代码。 Old Firebase 是另一个类。
Firestore _firestore = Firestore.instance;
firestore.collection('user')
.where('userId', isEqualTo: user.reference)
.snapshots().listen((snapshot)
snapshot.documents.forEach((doc)
doc.data['username']
)
)
【讨论】:
以上是关于如何在 Firestore 中搜索值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Firestore 在 Flutter 中搜索文本
在进行身份验证之前,如何使用 Flutter 从 Cloud Firestore 搜索和访问数据?