我想捕获一个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')
}
})
我的问题:如何检查我正确地遇到了哪种错误? (此刻我所无法解决的问题)
感谢您的帮助!
答案 0 :(得分:1)
无法从响应中确定哪个特定安全规则失败。这是设计使然,因为公开此信息会使恶意用户访问有关如何保护数据库的重要信息。因此,发送给客户端的错误消息始终是通用的“权限被拒绝”。
通常,根据此类错误消息,常规流控制听起来像是反模式。如果只想创建不存在的文档,请在事务中执行检查,以确保检查和创建是原子发生的。