数据库select返回错误处理问题
来源:1-6 用户列表接口
Enysen
2022-06-19 10:39:54
func (s *UserServer) GetUserByMobile(ctx context.Context, req *proto.MobileRequest) (*proto.UserInfoResponse, error){
// 通过手机号码查询用户
var user model.User
result := global.DB.Where(&model.User{Mobile:req.Mobile}).First(&user)
if result.RowsAffected == 0 {
return nil, status.Errorf(codes.NotFound, "用户不存在")
}
if result.Error != nil {
return nil, result.Error
}
userInfoRsp := ModelToRsponse(user)
return &userInfoRsp, nil
}
问题描述:
bobby老师,在你代码中经常会这样处理select返回值,先判断RowsAffected 是不是为0,表示数据库找不到,再去判断result.Error,如果是其他原因导致的错误,RowsAffected 是不是也为0,但实际上就走不到result.Error了,这个判断的先后顺序是否有影响?
1回答
bobby
2022-06-20
这里确实来讲,应该先判断Error的情况,再去判断RowsAffected 会更加严谨一些
相似问题