Firebase Security + Swift-无法读取数据

时间:2020-07-03 04:37:00

标签: swift google-cloud-firestore firebase-security

读取数据时遇到一些问题。我可以根据我的安全规则写得很好。请参阅下面的swiftui代码查询和我的安全规则。对于上下文,我有一个users集合和一个routines集合。每个常规文档都有一个绑定到用户的uid。谁知道为什么我在这里可能无法正确阅读(这影响了我随后的写作能力?

安全规则

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
    match /routines/{routine} {
        allow write: if request.auth != null && request.auth.uid == request.resource.data.uid;
      allow read: if request.auth != null && resource.data.uid == resource.data.uid;
    }
  }
}

快速查询代码

func updateRoutine() {
    db.collection("routines").whereField("name", isEqualTo: "temp routine").getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in querySnapshot!.documents {
                self.db.collection("users").document(self.currUser?.uid ?? "").updateData(["routinePreference": document.documentID])
                self.db.collection("routines").document(document.documentID).updateData(["name": "another temp routine"])
                return
            }
        }
        
    }
}

编辑 这是我得到的错误:

获取文档时出错:错误域= FIRFirestoreErrorDomain代码= 7 “缺少权限或权限不足。” UserInfo = {NSLocalizedDescription =缺少权限或不足的权限。} 2020-07-03 01:43:24.440221-0400 TestRulesApp [58965:7804974] 6.26.0- [Firebase / Firestore] [I-FST000001]在例程失败时侦听查询: 权限不足或不足。

1 个答案:

答案 0 :(得分:1)

您要在此处更新数据。使用的技术是传入字段值等于现有字段值。因此,您应该拥有更新规则allow update:if request.resource.data.uid == resource.data.uid;