【问题标题】:firebase firestore permission error not being caught by swift do try catchswift没有捕获firebase firestore权限错误,请尝试捕获
【发布时间】: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 是否存在这个问题?
  • 我有但找不到任何东西,这就是我在这里发帖的原因。

标签: swift firebase google-cloud-firestore


【解决方案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!")
    }
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多