firebase firestore - как проверить ошибку в подвохе - PullRequest
0 голосов
/ 19 октября 2018

Я хочу поймать ошибку в пожарном депо и выполнить код, основываясь на том, что это за ошибка. (Моя база данных построена так, что если документ не существует, вы не сможете получить к нему доступи поэтому я получаю много ошибок с отказом в разрешении для несуществующих документов. Мое решение состоит в том, чтобы проверить ошибку и создать документ, если я получаю ошибку об отказе в разрешении.)

Это мой текущий код:

            userDataDocRef.collection('emailPreferences').doc('main').get().then(function(doc) {
          if (doc.exists) {
            var data = doc.data();
            console.log(data);
            var getGameUpdates = data.getGameUpdates;
            switchEmailNewGames.checked = getGameUpdates;
          } else {

          }
        }).catch(function(error) {
          console.log(error)
          if (error == firebase.firestore.FirestoreError.permission-denied) {
            console.log('FIREBASE PERMISSION DENIED ERROR')
          }
        })

Мой вопрос: Как мне проверить, какую ошибку я получил правильно? (что у меня на данный момент не работает)

Спасибо за помощь!

1 Ответ

0 голосов
/ 20 октября 2018

Невозможно определить из ответа, какое конкретное правило безопасности не выполнено.Это сделано специально, поскольку раскрытие этой информации даст злоумышленникам доступ к важной информации о том, как защищена ваша база данных.Вот почему сообщение об ошибке, отправляемое клиенту, всегда является общим «отказано в разрешении».

В общем, в зависимости от сообщения об ошибке, подобного этому, для обычного управления потоком звучит как антипаттерн.Если вы хотите создать документ только в том случае, если он не существует, выполните проверку транзакции, которая гарантирует, что проверка и создание происходят атомарно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...