firebase firestore-如何检查catch中的错误

时间:2018-10-19 14:08:37

标签: javascript firebase error-handling google-cloud-firestore

我想捕获一个Firestore错误并根据错误类型执行代码。(我的数据库是基于文件的,如果不存在该文件,您将无法访问,因此对于不存在的文档,我收到了很多权限被拒绝的错误。我的解决方案是检查错误并在遇到权限被拒绝的错误时创建文档。)

这是我当前的代码:

            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 :(得分:1)

无法从响应中确定哪个特定安全规则失败。这是设计使然,因为公开此信息会使恶意用户访问有关如何保护数据库的重要信息。因此,发送给客户端的错误消息始终是通用的“权限被拒绝”。

通常,根据此类错误消息,常规流控制听起来像是反模式。如果只想创建不存在的文档,请在事务中执行检查,以确保检查和创建是原子发生的。