【发布时间】:2023-01-24 14:19:44
【问题描述】:
我正在为一个解析器函数工作图形QL查询我正在编写的 BE戈朗.在解析器中,我有要更新的用户数据,使用包含多个可能更新属性的输入值。
在 javascript 中,这可以通过解构(伪)快速完成:
const mergedObj = {...oldProps, ...newProps}
现在,我的解析器函数看起来像这样(对 GraphQL Go 解析器使用 gqlgen):
func (r *mutationResolver) ModifyUser(ctx context.Context, input *model.ModifyUserInput) (*model.User, error) {
id := input.ID
us, ok := r.Resolver.UserStore[id]
if !ok {
return nil, fmt.Errorf("not found")
}
if input.FirstName != nil {
us.FirstName = *input.FirstName
}
if input.LastName != nil {
us.LastName = *input.LastName
}
if input.ProfileImage != nil {
us.ProfileImage = input.ProfileImage
}
if input.Password != nil {
us.Password = *input.Password
}
if input.Email != nil {
us.Email = *input.Email
}
if input.InTomorrow != nil {
us.InTomorrow = input.InTomorrow
}
if input.DefaultDaysIn != nil {
us.DefaultDaysIn = input.DefaultDaysIn
}
r.Resolver.UserStore[id] = us
return &us, nil
}
这感觉很样板——在这种情况下遍历结构键是否有意义?还是我缺少另一种模式?
【问题讨论】:
标签: go graphql conditional-statements gqlgen