Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Вот несколько причин, почему вы хотите сделать это через контекст, хотя в вашем подходе нет ничего неправильного:
Когда вы будете писать модульные тесты, вы можете легко поменять местами призма с фиктивной реализацией. Вот пример этого: https://github.com/javascript-af/javascript-af/blob/1e89e5436fbf0d6e3de37f12e6853a8ff6fc7898/packages/backend/tests/utils/gqlTestClient.ts#L10 115]
Таким способом можно легко передать два экземпляра призмы, например, если вы хотите запросить данные в каком-то другом месте. Вы можете передать context.db1
и context.db2
, создав экземпляр класса Prisma
с двумя отдельными конечными точками и передав его на сервер graphql с помощью двух ключей в объекте контекста.
В документах graphql рекомендуется, чтобы доступ к БД проходил через контекст. Всегда приятно следовать спецификации: https://graphql.org/learn/execution/#asynchronous-resolvers