Я пытаюсь выяснить, почему мои правила чтения данных из коллекции штриховок не сработают. Идентификатор документа является идентификатором пользователя, который создал документ, а идентификатор пользователя является идентификатором другого пользователя. Я не могу заставить работать разрешения на чтение, поэтому мне интересно, что мне не хватает? Заранее благодарим за помощь.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function isSignedIn() {
return request.auth != null;
}
match /strokedata/{document} {
allow write: if isSignedIn() && document == request.auth.uid;
allow read: if document == request.auth.uid || request.auth.uid == resource.data.coachuid;
}
match /users/{document} {
allow create: if request.auth.uid != null;
allow read: if request.auth != null;
allow write: if document == request.auth.uid;
}
}
}
Вот код запроса клиента:
self.db.collection("strokedata").whereField("sessionid", isEqualTo: self.currentsession as Any).addSnapshotListener { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
print("\(document.documentID) => \(document.data())")
if let watts = document["watts"], let split = document["currentsplit"], let time = document["time"], let strokerate = document["strokerate"], let distance = document["distance"] {
self.lblCurrentWatts.text = "\(watts)"
let splitS = split as! Double
let timestring = splitS.asString(style: .positional)
let timeS = time as! Double
let splitstring = timeS.asString(style: .positional)
self.split500.text = "\(timestring)"
self.timeElapsedData.text = "\(splitstring)"
self.strokeRateData.text = "\(strokerate)"
self.lblDistance.text = "\(distance)m"
if document["heartrate"] == nil {
self.heartRateData.text = "\(0)"
} else {
if let heartrate = document["heartrate"] {
self.heartRateData.text = "\(heartrate)"
}