這是錯誤
"message": "無法在 GraphQL 背景關系中找到 Prisma 客戶端。請在 context["customPrisma"] 鍵下提供它"
堆疊跟蹤
stacktrace": [
"Error: Unable to find Prisma Client in GraphQL context. Please provide it under the `context[\"customPrisma\"]` key.",
" at getPrismaFromContext (webpack-internal:///(api)/./prisma/generated/type-graphql/helpers.js:25:15)",
" at FacturaCrudResolver.createOneFactura (webpack-internal:///(api)/./prisma/generated/type-graphql/resolvers/crud/Factura/FacturaCrudResolver.js:42:51)",
" at C:\\Users\\felip\\OneDrive\\Documentos\\evergreen-fin\\evergreen-facturacion\\node_modules\\type-graphql\\dist\\resolvers\\create.js:31:98",
" at process.processTicksAndRejections (node:internal/process/task_queues:95:5)"
]
}
}
}
我正在使用 Graphql 和 Apollo 服務器來測驗我需要將一些資料發送到資料庫的突變。nextJS 中的 GQL 服務器 API 是下一個:
import 'reflect-metadata';
import 'ts-tiny-invariant'
import { NextApiRequest, NextApiResponse } from 'next';
import { PrismaClient } from '@prisma/client';
import { ApolloServer } from 'apollo-server-micro';
import Cors from 'micro-cors'
import { resolvers } from '../../prisma/generated/type-graphql';
import { buildSchema } from 'type-graphql';
//import prisma from '../../config/prisma'
const prisma = new PrismaClient();
const cors = Cors({
allowMethods: ['POST', 'GET', 'OPTIONS', 'HEAD']
})
interface Context {
p: PrismaClient;
}
export const config = {
api:{
bodyParser: false,
},
}
const serverGraphql = async (req: NextApiRequest, res: NextApiResponse) => {
const schema = await buildSchema({
resolvers: resolvers,
validate: false
})
const server = new ApolloServer({
schema: schema,
introspection: true,
context: (): Context => ({ p: prisma })
});
const start = server.start()
await start;
return server.createHandler({
path: '/api/graphql'
})(req, res)
}
export default cors((req:any, res:any) => {
if (req.method === "OPTIONS") {
res.end()
return false;
}
return serverGraphql(req,res);
})
在 Type-graphql 的檔案中,我看到我需要將背景關系添加到 .prisma 檔案的生成器中,我將模型用于遷移資料庫
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
generator typegraphql {
provider = "typegraphql-prisma"
output = "../prisma/generated/type-graphql"
contextPrismaKey = "customPrisma" -> THERE IS THE CUSTOMPRISMA WHERE I SEE THE ERROR IN Apollo server
emitTranspiledCode = true
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
email String @unique
nombre String?
role Role @default(CLIENT)
facturas Factura[]
profile Profile?
}
model Profile {
id Int @id @default(autoincrement())
bio String
user User @relation(fields: [userId], references: [id])
userId Int @unique
}
model Factura {
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
moneda String @db.VarChar(3)
monto Float
pais String
esEfectivo String? @default("efectivo")
published Boolean @default(true)
cliente User @relation(fields: [clienteId], references: [id])
clienteId Int
}
enum Role {
CLIENT
ADMIN
}
突變是下一個
uj5u.com熱心網友回復:
在 prisma 模式中,將 contextPrismaKey 更改p
為customPrisma
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/525309.html