首页 > 解决方案 > 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:)

有什么想法或建议吗?

标签: swiftfirebasegoogle-cloud-firestore

解决方案


尝试使用 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!")
    }
}

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


推荐阅读