Я пытаюсь загрузить документ в облако. Этот документ действует как запрос, который функция Cloud обрабатывает позже. В любом случае, мой код для написания документа:
try {
Firestore.instance.collection('cloud_requests').document().setData(
{'UID': user.uid, 'UDID': cameraScanResult, 'request': 'add'});
} on PlatformException catch (e) {
print(e);
Alert(
context: context,
type: AlertType.error,
title: "Something went wrong.",
buttons: [
DialogButton(
onPressed: () {
Navigator.pop(context);
},
color: Colors.red,
child: Text(
"Ok",
style: TextStyle(color: Colors.white, fontSize: 20),
),
),
]).show();
return;
}
Проблема в том, что ошибка с отсутствующим разрешением является преднамеренной, поскольку мои правила установлены следующим образом:
match /cloud_requests/{cloudRequest} {
function isUser() {
return request.auth != null && (request.resource.data.UID == request.auth.uid);
}
function isValidDevice() {
return exists(/databases/$(database)/documents/devices/$(request.resource.data.UDID));
}
function isValidRequest() {
return (request.resource.data.request == "add" || request.resource.data.request == "remove")
}
allow write: if (isUser() && isValidDevice() && isValidRequest());
allow read: if false;
}
Несмотря на попытки поймать ошибка с попыткой поймать или с помощью опции .catchError()
, я не могу ее уловить.