我正在try 更新我的mongo文档,但我总是收到错误,我似乎不能完全理解这个错误.
type UpdateCarpoolDTO struct {
CarpoolID string `json:"carpoolId" bson:"carpoolId"`
Passenger Passenger `bson:"passenger" json:"passenger"`
}
type Passenger struct {
User User `bson:"user" json:"user"`
NumberOfSeats int `json:"numberOfSeats" bson:"numberOfSeats"`
Pickup Location `json:"pickup" bson:"pickup"`
DropOff Location `json:"dropOff" bson:"dropOff"`
DoorToDoorOption bool `bson:"doorToDoorOption" json:"doorToDoorOption"`
LuggageSize string `bson:"luggageSize" json:"luggageSize"`
}
type Carpool struct {
ID string `json:"id,omitempty" bson:"_id,omitempty"`
SeatsAvailable int `json:"seatsAvailable" bson:"seatsAvailable"`
Passengers []*Passenger `bson:"passengers" json:"passengers"`
CreatedAt time.Time `json:"createdAt" bson:"createdAt"`
UpdatedAt time.Time `json:"updatedAt" bson:"updatedAt"`
...
}
func (r *carpoolRepository) AddPassanger(dto *UpdateCarpoolDTO) (*Carpool, *errors.Error) {
ctx, cancel := context.WithTimeout(context.Background(), mongoQueryTimeout)
defer cancel()
log.Println("THE DTO OBJ:::", dto)
var result *Carpool
filter := bson.M{"_id": dto.CarpoolID}
update := bson.M{
"$set": bson.M{
"passangers": bson.M{
"$push": dto.Passenger,
},
"seatsAvailable": bson.M{
"$subtract": []interface{}{
"$seatsAvailable",
dto.Passenger.NumberOfSeats,
},
},
},
"$currentDate": bson.M{"updatedAt": true},
}
log.Println("THE DTO OBJ:::", "GOT HERE 1")
options := options.FindOneAndUpdate().SetReturnDocument(1)
log.Println("THE DTO OBJ:::", "GOT HERE 2")
if err := r.collection.FindOneAndUpdate(ctx, filter, update, options).Decode(&result); err != nil {
log.Println("THE DTO OBJ:::", "GOT HERE 3")
if err == mongo.ErrNoDocuments {
// failing here
log.Println("THE DTO OBJ:::", "GOT HERE 4")
return nil, errors.NewNotFoundError("request not found")
}
log.Println("THE DTO OBJ:::", "GOT HERE 5")
log.Println("THE DTO OBJ 5 err:::", err.Error())
return nil, errors.New(err.Error())
}
log.Println("THE DTO OBJ:::", "GOT HERE 6")
return result, nil
}
我用来调试的LOG语句打印以下内容
THE DTO OBJ::: &{91e7a42c-xxxx {{Ebene 0x14000392c00 Obey 5120000000 <nil>} 1 {312 Main St 3 43.xxx -79.xxxx Ontario Toronto N2J 223 Canada <nil>} {978 Elm St 2 43.xxxx -80.xxx Ontario Toronto 2B2 111 Canada <nil>} true MEDIUM}} 2023/06/15 11:32:45
THE DTO OBJ::: GOT HERE 1 2023/06/15 11:32:45
THE DTO OBJ::: GOT HERE 2 2023/06/15 11:32:45
THE DTO OBJ::: GOT HERE 3 2023/06/15 11:32:45
THE DTO OBJ::: GOT HERE 5 2023/06/15 11:32:45
THE DTO OBJ 5 err::: error decoding key seatsAvailable: cannot decode embedded document into an integer type
如有需要,可提供更多代码.