MongoSwiftSync 驱动程序。MongoCollection.insertMany() 中。从“any Error”强制转换为不相关的类型“MongoError.BulkWriteError”始终失败

MongoSwiftSync driver. MongoCollection.insertMany(). Cast from 'any Error' to unrelated type 'MongoError.BulkWriteError' always fails

提问人:DavidT 提问时间:4/14/2023 更新时间:4/14/2023 访问量:14

问:

我在 Swift 5.8、Xcode 14.3、macOS 13.3.1、MacBook Pro M1 Max。 本地托管的 MongoDb Community Server 6。 我有这个功能:

func fInsertSome(_ sCollection: String, documents: [some Codable]) throws {
    let zCollection = zDb.collection(sCollection.lowercased()) // returns actual collection from collection name
    let azDocuments = try documents.map { try BSONEncoder().encode($0) }
    do {
        try zCollection.insertMany(azDocuments)
    }
    catch {
        if let errorCode = (error as? MongoSwift.MongoError.BulkWriteError)?.writeFailures?.first?.code, errorCode == 11000 {
            // one of the documents has a duplicate key.  If so, switch to writing them one by one, and handle each one individually:
            for document in documents {
                do {
                    let zDocument = try BSONEncoder().encode(document)
                    try zCollection.insertOne(zDocument)
                }
                catch {
                    if let errorCode = (error as? MongoSwift.MongoError.WriteError)?.writeFailure?.code, errorCode == 11000 {
                    }
                    else {
                        print("This error occurred when trying to insertOne: ", error)
                        throw error
                    }
                }
            }
        }
        else {
            print("This error occurred when trying to insertMany: ", error)
            throw error
        }
    }
}

我在两行上收到警告: “从'任何错误'强制转换为不相关的类型'MongoError.BulkWriteError'总是失败”if let errorCode ... errorCode == 11000

我已经阅读了文档(这里),其中说这两个函数分别抛出四种类型的错误(包括我正在使用的两种错误:MongoError.BulkWriteError、MongoError.WriteError),但似乎我没有正确转换它,或者其他什么......?

我尝试了一些东西,包括 ChatGPT 的一些建议,但到目前为止,它和我都无法弄清楚。

这里有人可以帮忙吗?

提前致谢!

Swift MongoDB 错误处理 转换

评论


答: 暂无答案