所以我在名为“作者”的集合中有一个数组。我想检查某个字符串(邮件)是否存在,但是它说对getDocuments的权限被拒绝。 这是一个小片段:
List<String> authors;
_getAuthors(DocumentSnapshot doc) async {
if (await FirebaseAuth.instance.currentUser() != null) {
var query = Firestore.instance
.collection('mealList')
.where('Authors', arrayContains: mail);
query.getDocuments().then((value) => print(value));
}
}
Widget buildItem(DocumentSnapshot doc) {
DateTime now = doc.data['Date'].toDate();
DateFormat formatter = DateFormat('dd-MM-yyyy');
String formatted = formatter.format(now);
_getUserId();
_getMail(doc);
if (doc.data['Authors'] != null) {
_getAuthors(doc);
}
这是我的数据库规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /mealList/{uid} {
allow read, write: if request.auth == null;
}
match /shoppingList/{uid} {
allow read, write: if request.auth != null;
}
}
}
答案 0 :(得分:0)
<form class ="Contactform" action = "contact.php">
<div class = "columns">
<div class = "column is-half">
<div class = "title is-1 ">
Contact Form
</div>
</div>
<div class = "column is-half">
<div class = "field">
<label class = "label namepart">Name</label>
<div class = "control">
<input class ="input name" type="text" placeholder = "e.g John Doe" name = "name">
<div class="field emailpart">
<label class="label">Email</label>
<div class="control has-icons-left has-icons-right">
<input class="input email" type="email" placeholder="Email input" value="name@" name = "email">
<span class="icon is-small is-left">
<i class="fas fa-envelope"></i>
</span>
<span class="icon is-small is-right">
</span>
</div>
</div>
</div>
<div class ="Messagepart">
<label class = "label">Message</label>
<textarea class="textarea" placeholder="e.g. Description" name = "msg"></textarea>
</div>
<div>
<br>
<button class= "button is-sucess "> Submit </button>
</div>
</div>
</form>
答案 1 :(得分:0)
在餐单中,您已将规则声明为
match /mealList/{uid} {
allow read, write: if request.auth == null;
}
这不允许获得授权的用户进行读写。
因此,尝试将其替换为:
match /mealList/{uid} {
allow read, write: if request.auth != null;
}