On Thu, 17 Jan 2019, at 8:13 AM, [email protected] wrote:
> Hi I am using NYT's Marvin framework which internally uses gorilla mux. I am
> able to delete single record when I pass single id as json object in request
> body using postman but I don't know how to handle array of json objects here.
> My code is as below:-
>
> For decoding ---
>
> func DecodeDeleteUser(ctx context.Context, r *http.Request) (interface{},
> error) {
> /// uriDeleteRequest := &UserDel{}
> uriDeleteRequest := &[]UserDel{}
> log.Infof(ctx, "DeleteUser before decoding :::::: %+v", r)
> if err := json.NewDecoder(r.Body).Decode(uriDeleteRequest); err != nil {
> log.Errorf(ctx, "Delete User Error : Could not decode body from the request")
> return nil, marvin.NewJSONStatusResponse(
> "could not decode request body in DeleteUser",
> http.StatusBadRequest,
> )
> }
> log.Infof(ctx, "DeleteUser After decoding ::: decoding done successfully",
> uriDeleteRequest)
> return uriDeleteRequest, nil
> }
>
> It successfully decodes array of JSON. Now problem arises is function below-
>
> func(s service) deleteUserFromDb(ctx context.Context, request interface{})
> (interface{}, error) {
> // var userdel []UserDel
> log.Infof(ctx, "request just inside method deleteUserFromDb : %+V",request)
> r := request.([]*UserDel)
> log.Infof(ctx, "request in form of r is : %+V",r)
> // db, err := s.ConnectsService.initPostgreConnection(ctx)
> _, err := s.ConnectsService.initPostgreConnection(ctx)
> if err != nil {
> log.Infof(ctx, "Connection established in deleteUserFromDb method ...")
> return nil,err
> }
> return "all fine",nil
> }
>
> Here line * r := request.([]*UserDel) *gives following error - panic:
> interface conversion: interface {} is *[]test_marvin.UserDel, not
> []*test_marvin.UserDel
>
> Here test_marvin is my code's package name. Please help as I don't know what
> is wrong with my above code in golang?
>
In DecodeDeleteUser it looks like your request is a pointer to a slice of
UserDel but in deleteUserFromDb you are expecting it to be a slice of pointers
to UserDel. Change uriDeleteRequest := &[]UserDel{} to be uriDeleteRequest :=
[]*UserDel{} and it should work.
All the best,
Ian
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.