第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何處理重復(fù)的唯一索引錯(cuò)誤?

如何處理重復(fù)的唯一索引錯(cuò)誤?

Go
阿波羅的戰(zhàn)車(chē) 2022-04-26 15:33:11
我正在使用 MongoDB。將數(shù)據(jù)添加到集合的代碼:  type User struct {  Firstname        string             `json:"firstname" bson:"firstname"`  Lastname         *string            `json:"lastname,omitempty" bson:"lastname"`  Username         string             `json:"username" bson:"username"`  RegistrationDate primitive.DateTime `json:"registrationDate" bson:"registrationData"`  LastLogin        primitive.DateTime `json:"lastLogin" bson:"lastLogin"`}var client *mongo.Clientfunc AddUser(response http.ResponseWriter, request *http.Request) {  collection := client.Database("hattip").Collection("user")  var user User  _ = json.NewDecoder(request.Body).Decode(&user)  insertResult, err := collection.InsertOne(context.TODO(), user)  if err != nil {    // here i need to get the kind of error.    fmt.Println("Error on inserting new user", err)    response.WriteHeader(http.StatusPreconditionFailed)  } else {    fmt.Println(insertResult.InsertedID)    response.WriteHeader(http.StatusCreated)  }}func main() {  client = GetClient()  err := client.Ping(context.Background(), readpref.Primary())  if err != nil {    log.Fatal("Couldn't connect to the database", err)  } else {    log.Println("Connected!")  }  router := mux.NewRouter()  router.HandleFunc("/person", AddUser).Methods("POST")  err = http.ListenAndServe("127.0.0.1:8080", router)  if err == nil {    fmt.Println("Server is listening...")  } else {    fmt.Println(err.Error())  }}如果我使用數(shù)據(jù)庫(kù)中已經(jīng)存在的用戶名添加記錄,我會(huì)得到 -插入新用戶多個(gè)寫(xiě)入錯(cuò)誤時(shí)出錯(cuò):[{寫(xiě)入錯(cuò)誤:[{E11000 重復(fù)鍵錯(cuò)誤集合:hattip.user 索引:用戶名_唯一重復(fù)鍵:{用戶名:“dd”}}]},{}]在 line字段中fmt.Println("Error on inserting new user", err)帶有字符串的記錄dd已經(jīng)username存在,并且該username字段是唯一索引。我想確定錯(cuò)誤是確切的 E11000 錯(cuò)誤(重復(fù)的關(guān)鍵錯(cuò)誤集合)。到目前為止,我比較err了出現(xiàn)在唯一字段重復(fù)上的整個(gè)錯(cuò)誤字符串,但這是完全錯(cuò)誤的。如果有辦法從err對(duì)象獲取錯(cuò)誤代碼,或者有其他方法可以解決這個(gè)問(wèn)題?另外,我找到mgo了包,但要正確使用它,我必須學(xué)習(xí)它,重寫(xiě)當(dāng)前代碼等等,但老實(shí)說(shuō),它看起來(lái)不錯(cuò):if mgo.IsDup(err) {    err = errors.New("Duplicate name exists")}
查看完整描述

1 回答

?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊

根據(jù)驅(qū)動(dòng)程序文檔,InsertOne可能會(huì)返回 a WriteException,因此您可以檢查錯(cuò)誤是否為 a WriteException,如果是,則檢查WriteErrors其中。每個(gè)都WriteError包含一個(gè)錯(cuò)誤代碼。


if we, ok:=err.(WriteException); ok {

   for _,e:=range we.WriteErrors {

      // check e.Code

   }

}

IsDup你可以根據(jù)這個(gè)寫(xiě)一個(gè)。


查看完整回答
反對(duì) 回復(fù) 2022-04-26
  • 1 回答
  • 0 關(guān)注
  • 251 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)