gpt4 book ai didi

firebase - 将Firestore数据过滤为仅包含当前用户信息

转载 作者:行者123 更新时间:2023-12-03 03:50:32 24 4
gpt4 key购买 nike

我试图限制从Firestore返回的数据仅限于当前用户。目前,我的应用程序正在将所有用户信息返回到主屏幕上的listveiw,这不是预期的结果。我已经阅读了许多描述如何实现此目标的文章,但似乎无法通过我的代码实现这一目标(下)。我有带单个顶级集合的Firestore数据库,该集合为每个经过Firebase认证的用户都拥有一个文档。我不希望返回所有文档/用户信息,而仅返回当前用户的文档/用户信息。希望我已经提供了应该应用此更改的正确代码...
---数据库服务代码------

 import 'package:example_app/models/family.dart'; import
'package:example_app/models/user.dart'; import
'package:cloud_firestore/cloud_firestore.dart';

class DatabaseService { final String uid; DatabaseService({
this.uid });

// collection reference final CollectionReference familyCollection
= Firestore.instance.collection('family'); Future<void> updateUserData(
String nameFirst,
String nameLast,
String phoneNumber,
String profilePicture,
String familyMemberID,
String userID,
) async { // String sugars, int strength) async {

return await familyCollection.document(uid).setData({
'nameFirst': nameFirst,
'nameLast': nameLast,
'phoneNumber': phoneNumber,
'profilePicture': profilePicture,
'familyMemberID': familyMemberID,
'userID': userID,
}); }

// family list from snapshot List<Family>
_familyListFormSnapshot(QuerySnapshot snapshot) {
return snapshot.documents.map((doc){
//print(doc.data);
return Family(
nameFirst: doc.data['nameFirst'] ?? '',
nameLast: doc.data['nameLast'] ?? '',
phoneNumber: doc.data['phoneNumber'] ?? '',
profilePicture: doc.data['profilePicture'] ?? '',
familyMemberID: doc.data['familyMemberID'] ?? '',
userID: doc.data['userID'] ?? ''
);
}).toList(); }

// user data from snapshots UserData
_userDataFromSnapshot(DocumentSnapshot snapshot) {
return UserData(
uid: uid,
nameFirst: snapshot.data['nameFirst'],
nameLast: snapshot.data['nameLast'],
phoneNumber: snapshot.data['phoneNumber'],
profilePicture: snapshot.data['profilePicture'],
familyMemberID: snapshot.data['familyMemberID'],
userID: snapshot.data['userID'],
); }

// get profiles stream Stream<List<Family>> get profiles {
return familyCollection.snapshots()
.map(_familyListFormSnapshot); }

// get user doc stream Stream<UserData> get userData {
return familyCollection.document(uid).snapshots()
.map(_userDataFromSnapshot); } }

最佳答案

为了获得当前的用户信息,您可以使用document path特定userUID,我认为这是每个用户的documentId。这就是查询:

final data = await Firestore.instance
.document("users/${currentUser.uid}")
.get();
它返回 DocumentSnapshot,因此使用如下数据: data.data

关于firebase - 将Firestore数据过滤为仅包含当前用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63607836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com