我正在像这样向 FireStore 添加数据:
onPressed: () async {
// signInAnonymously();
UserCredential userCredential =
await FirebaseAuth.instance.signInAnonymously();
addReminderToFirebase();
validateForm();
},
.
Future<DocumentReference> addReminderToFirebase() {
return FirebaseFirestore.instance
.collection('Reminders')
.add(<String, dynamic>{
'text': "Remember to do Laundry",
'timestamp': DateTime.now(),
'userId': FirebaseAuth.instance.currentUser!.uid,
});
}
目前我有每个人都可以访问的文档,但它们全都混淆了
如何让每个用户拥有自己的数据?其他人无法访问?
答案 0 :(得分:1)
您应该使用他们的 userId
获取特定用户的数据。
您可以使用以下代码段获取当前用户数据。
await FirebaseFirestore.instance
.collection('Reminders')
.where('userId', isEqualTo: FirebaseAuth.instance.currentUser!.uid);
答案 1 :(得分:1)
您似乎有一个字段 userId
可用于获取该提醒的创建者。您可以检查请求提醒的用户是否是同一个人,即请求者的 UID 与 userId
字段相同。试试这些安全规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /Reminders/{reminderId} {
allow read, write: if request.auth != null && resource.data.userId == request.auth.uid;
}
}
}
然后要获取单个用户的提醒,您可以使用 queries
var currentUser = FirebaseAuth.instance.currentUser
if (currentUser) {
remindersCollection.where("userId", "==", currentUser.uid)
}