提问人:DavidT 提问时间:4/14/2023 更新时间:4/14/2023 访问量:14
MongoSwiftSync 驱动程序。MongoCollection.insertMany() 中。从“any Error”强制转换为不相关的类型“MongoError.BulkWriteError”始终失败
MongoSwiftSync driver. MongoCollection.insertMany(). Cast from 'any Error' to unrelated type 'MongoError.BulkWriteError' always fails
问:
我在 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 的一些建议,但到目前为止,它和我都无法弄清楚。
这里有人可以帮忙吗?
提前致谢!
答: 暂无答案
评论