我正在用Flutter开发一个应用程序。我在Firestore上有一个结构为:users/(UserID)/collection/document的数据库,这里UserID是创建(UserID)文档的用户的唯一uid。代码用于获取用户的uid is
user.uid;
其中user是FireBaseUser的实例。我试图设置这样的规则,即只有当request.auth.uid与(UserID)文档id匹配时,只有用户才能读/写。
service cloud.firestore {
match /databases/{database}/documents {
match /Users/{documentID} {
allow read, write: if isOwner(documentID);
}
function isOwner(documentID){
return request.auth.uid == documentID;
}
}
}
class EmployeeList extends StatefulWidget {
static bool isMale;
final String userId;
EmployeeList([this.userId]);
void setIsMale(bool gen) {
isMale = gen;
}
bool get getIsMale => isMale;
@override
State<StatefulWidget> createState() => _EmployeeList();
}
class _EmployeeList extends State<EmployeeList> {
String employeeName;
final TextEditingController textEditingController =
TextEditingController();
String gender;
int keyIndex;
CollectionReference listColRef;
bool firstTime;
Firestore db = Firestore.instance;
@override
void initState() {
gender = EmployeeList().getIsMale ? "Male" : "Female";
listColRef =
db.collection('Users').document(widget.userId).collection('EmployeeList');
print(widget.userId);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey[100],
appBar: AppBar(
title: Text('Employees'),
),
body: Padding(
padding: const EdgeInsets.all(5),
child: StreamBuilder<QuerySnapshot>(
stream: listColRef.where('Gender', isEqualTo:
gender).snapshots(),
这是数据库的结构:https://imgur.com/a/ai6uiko
您的数据库规则与您的查询不匹配。您的查询试图使用模式/users/{userId}/employeeList
查找集合下的文档。但是您的规则只允许访问/users/{documentID}
下的文档。如果希望允许访问嵌套子集合中的文档,则需要确保整个路径匹配。例如:
match /Users/{userId}/EmployeeList/{id} {
allow read, write: if isOwner(userId);
}
每个食谱文档包含三个内容。一个名为的字段,其中存储菜谱的名称;一个名为的字段,其中存储创建者uid的,以及一个名为的子集合,其中包含带有一些随机字段的文档。 问题是,使用这些规则只能创建菜谱文档。子集合及其文档不会创建,因为db表示 FirebaseError:[code=permission-denied]:缺少权限或权限不足。FirebaseError:缺少权限或权限不足。
我没主意了。希望新的眼光能有所帮助。 我有以下安全规则: 我正在下面的代码中设置文档: 我简直想不通。任何帮助都将不胜感激。
我正在尝试将数据添加到Firebase Firestore的文档中。我向其中添加了一个名为“用户”的集合。此外,读/写权限目前已打开。我在跟踪这个医生。我无法将数据添加到文档中。 以下是我想做的: 在日志中,我只看到以下内容(无论是失败日志还是成功日志): 当我看到Firebase控制台时,根据应该创建的日志,我找不到ID的文档。 还有一个类似的问题:无法向Cloud FiRecovery添加信息
在我们仔细处理之后。我仍然无法获取自动生成的文档ID。没有“then”选项。我的代码: 创建后如何获取ID?
我有一个文档集合,其中文档的id是用户id。让我们称这些为用户文档。 每个“用户文档”包含聊天消息的子集合。但并不是所有的“用户文档”都包含任何字段(数据,而不是子集合)。 我不想返回集合中没有任何字段但有子集合的所有文档,但我觉得这是不可能的? 此代码只返回包含字段的文档,而不是只有子集合的文档?有没有办法全部返回? 如何获取集合中所有文档id的列表?空的和非空的都有?或者,如果我不能访问没有字
我想在firestore数据库中查询文档id。目前我有以下代码: 我没有结果。但当我查询其他字段时,它会起作用: 文档id的名称是如何调用的?