Slide 10
Slide 10 text
DataLoaderなしの実装
実装はシンプルだが、N+1 問題がある
func (r *todoResolver) User(ctx context.Context, obj *gql.Todo) (*gql.User, error) {
// Todoから受け取ったUserIDを使って取得
user, err := model.GetUser(ctx, s.db, obj.UserID) // <- ここでN+1クエリが発生!
if err != nil { return nil, err }
return &gql.User{
ID: user.ID,
Name: user.Name,
}, nil
}