Когда использовать `parent` и когда использовать` root` в качестве первого аргумента в функции GraphQL-resolver - PullRequest
0 голосов
/ 29 октября 2018

Я видел некоторые учебные пособия и примеры, которые иногда используют parent, а иногда root в качестве первого аргумента в распознавателе graphql.

Какое будет правильное наименование, в какой ситуации и почему?

Например (nodejs):

signup: (root, args, context, info) => signup(root, args, context, info)

против

signup: (parent, args, context, info) => signup(parent, args, context, info)

или в функции, которая выполняет регистрацию:

const signup(root, args, context, info) = {
    // do magic stuff
}

против

const signup(parent, args, context, info) = {
    // do magic stuff
}

1 Ответ

0 голосов
/ 30 октября 2018

Здесь нет установленного соглашения. Я видел root, parent и obj, все они используются в разных справочных руководствах. В конце дня вы можете вызывать аргументы вашей функции как хотите - ваш код будет функционировать так же.

Тем не менее, я обычно использую имя типа, в котором поле разрешается частично. Так что для типа, как

type RoomRental {
  user: User
  date: Date
}

подпись решателя выглядит следующим образом:

user: (roomRental, args, context, info) => {
  //
}

Я считаю, что это упрощает рассуждения о том, что делает ваш распознаватель, когда вы (или напарник по команде) читаете код. Опять же, это только мои предпочтения, но вы можете найти, что это помогает сделать ваш код немного более удобочитаемым.

Для завершения я бы также добавил, что GraphQL.js имеет настраиваемое значение root. Это значение передается в качестве первого аргумента в средствах разрешения полей корневого уровня (то есть полей таких типов, как Query или Mutation). Передача вещей через корень не очень полезна - все, что вы могли бы пройти таким образом, должно вместо этого идти в вашем context. Тем не менее, значение root является частью реализации, и, возможно, по этой причине во многих примерах в качестве имени для первого аргумента используется root.

...