Как получить доступ к объекту контекста GraphqlServer, когда я добавляю фигурные скобки, чтобы иметь возможность добавлять дополнительные элементы в контекст? - PullRequest
0 голосов
/ 06 мая 2020

Я работаю с GraphQL, Graphql-yoga и NodeJS.

У меня проблемы с доступом к моему массиву БД, когда он вложен в мой контекст GraphQLServer. Все работает нормально, когда мой контекст GraphQLServer настроен с одним элементом, как показано здесь: (db - это массив для имитации содержимого БД).

enter image description here

Когда Я добавляю к нему фигурные скобки, он ломается:

enter image description here

Даже если я не вижу ошибок при кодировании, при попытке выполнить любой из моих резольверам кажется, что они больше не могут получить доступ к объекту БД, и все мои find (), findIndex (), some () и все методы, связанные с моим массивом БД, больше не работают. Если я вернусь к: context: db, все будет работать отлично.

Это ошибка, которую я получаю при запуске TypeError: Cannot read property 'findIndex' of undefined

Вот как выглядит мой преобразователь :

enter image description here

Даже если я удалю контекст для работы непосредственно с массивом в моем преобразователе, я все равно получаю ту же ошибку:

enter image description here

Это мой пакет. json:

enter image description here

Любая помощь приветствуется.

1 Ответ

1 голос
/ 06 мая 2020

Если вы сделаете это:

const context = db

, тогда вы устанавливаете значение контекста на любое значение db. Если вы сделали это, а затем запустили следующий код

context.db.comments.findIndex(comment => comment.id === args.id)

, это будет означать, что у объекта context есть свойство с именем db. Поскольку context совпадает с исходной переменной db, это будет означать, что в исходной переменной db было свойство с именем db. Таким образом, этот код также будет работать, если вы используете переменную db напрямую:

db.db.comments.findIndex(comment => comment.id === args.id)

Если вместо установки context на db вы установите его значение в новый объект со свойством с именем db а затем установите значение этого свойства на db

context = { db: db }

или используя сокращенную запись:

context = { db }

, тогда ваш вызов функции теперь будет выглядеть так:

context.db.db.comments.findIndex(comment => comment.id === args.id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...