swift - firebase firestore 权限错误没有被 swift 捕获,请尝试捕获
问题描述
我在 swift 方法中有以下代码,可以在 firestore 中保存一些数据:
do {
try db.collection("data").document("sample").setData(from: docData)
} catch {
print("\(error)")
}
所以它可以工作,但我有一些我正在测试的firestore安全规则,它们也在工作 - 在应该的时候允许写入,在应该的时候拒绝。唯一的问题是,当服务器拒绝时,swift 没有启动。
如果写入被拒绝,Xcode 日志输出会显示:
WriteStream Stream error: 'Permission denied: Missing or insufficient permissions.'
Write at ... failed: Missing or insufficient permissions.
所以它被正确地拒绝了,因为安全规则被正确应用,但 swift 没有在catch
. 我试图查看这个并查看了文档,但 Firebase/Firestore 文档甚至还没有更新到新的 SDKsetData(from:)
有什么想法或建议吗?
解决方案
尝试使用 Firestore catch 子句而不是 Swift 进行查询,如 Swift文档中的示例所示:
// Add a new document in collection "cities"
db.collection("cities").document("LA").setData([
"name": "Los Angeles",
"state": "CA",
"country": "USA"
]) { err in
if let err = err {
print("Error writing document: \(err)")
} else {
print("Document successfully written!")
}
}
这样你应该能够处理错误。
推荐阅读
- android - Room 数据库使用协程异步返回 Null
- javascript - 在 livewire 组件中自动打开模态它不起作用
- javascript - 弹出窗口完全加载后如何单击按钮
- amazon-web-services - 在 AWS CodePipeline 中配置提交消息过滤器
- c++ - SFML 如何在特定时间绘制多个纹理堆
- r - 在R中按组计算百分比
- java - 从editText获得的int不显示
- reactjs - 通过路由器我想更改我在路由中插入的内容,但是当我单击按钮时它没有更改组件,为什么?
- flutter - 如何从整个班级颤振中访问字符串
- javascript - 如何从 php 中的每个按钮获取值?