#graphql #apollo-server #prisma
#graphql #apollo-сервер #prisma
Вопрос:
Как я должен передать экземпляр клиента prisma в контекст graphql?
const prisma = new PrismaClient()
// Should i use it like this?
export async function contextResolver(ctx: Ctx): Promise<Ctx> {
ctx.db = prisma
}
// Or this
export async function contextResolver(ctx: Ctx): Promise<Ctx> {
ctx.db = new PrismaClient()
}
const apolloServer = new ApolloServer({
schema,
context: contextResolver
})
Я не уверен, что в первом случае мой клиент будет каким-то образом заблокирован, когда первый запрос выполняет транзакцию, а второй пытается использовать тот же клиент в это время.
Ответ №1:
Он должен быть первым.
const prisma = new PrismaClient()
export async function contextResolver(ctx: Ctx): Promise<Ctx> {
ctx.db = prisma
}
Рекомендуется использовать только один экземпляр Prisma
для запуска во всем вашем приложении. Это также предотвратит исчерпание подключений к базе данных.