swift没有捕获firebase firestore权限错误,请尝试捕获

Posted

技术标签:

【中文标题】swift没有捕获firebase firestore权限错误,请尝试捕获【英文标题】:firebase firestore permission error not being caught by swift do try catch 【发布时间】:2021-03-31 02:56:06 【问题描述】:

我在 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 文档甚至还没有更新到为setData(from:) 抛出的新 SDK

有什么想法或建议吗?

【问题讨论】:

你检查过 Firestore git 是否存在这个问题? 我有但找不到任何东西,这就是我在这里发帖的原因。 【参考方案1】:

尝试使用 Firestore catch 子句而不是 Swift 子句进行查询,如 example in the documentation for 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!")
    

这样你应该能够处理错误。

【讨论】:

以上是关于swift没有捕获firebase firestore权限错误,请尝试捕获的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase 异步加载数据

如何使用 swift 和 firebase 正确使用完成处理程序?

Flutter firebase消息:iOS手机没有消息捕获

输入“用户?”没有成员 UID(Swift 3、Firebase)

为啥我在 Swift 中没有收到来自 Firebase 的推送通知?

Firebase 没有收到 Swift 的键值