Как я должен передать экземпляр клиента prisma в контекст graphql?

#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 для запуска во всем вашем приложении. Это также предотвратит исчерпание подключений к базе данных.