使用 N 到 M Panics 进行查询
Query with N to M Panics
重现步骤
日志
prisma-client { clientVersion: '2.13.1' }
prisma-client Error: PANIC: 1
prisma-client
prisma-client This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic.
prisma-client
prisma-client https://github.com/prisma/prisma-client-js/issues/new?body=Hi+Prisma+Team%21+My+Prisma+Client+just+crashed.+This+is+the+report%3A%0A%23%23+Versions%0A%0A%7C+Name++++++++++++%7C+Version++++++++++++%7C%0A%7C-----------------%7C--------------------%7C%0A%7C+Node++++++++++++%7C+v12.18.3+++++++++++%7C+%0A%7C+OS++++++++++++++%7C+undefined%7C%0A%7C+Prisma+Client+++%7C+2.13.1+++++++++++++%7C%0A%0A%0A%0A%23%23+Logs%0A%60%60%60%0A++prisma-client+%7B+clientVersion%3A+%272.13.1%27+%7D++%0A%60%60%60&title=PANIC%3A+1&template=bug_report.md
prisma-client
prisma-client If you want the Prisma team to look into it, please open the link above
prisma-client
prisma-client at NodeEngine.handleRequestError (C:\Users\TreNr\AppData\Roaming\Prisma\Studio\e5cd9139\runtime\index.js:26642:21)
prisma-client at C:\Users\TreNr\AppData\Roaming\Prisma\Studio\e5cd9139\runtime\index.js:27295:36
prisma-client at processTicksAndRejections (internal/process/task_queues.js:97:5)
prisma-client at async PrismaClientFetcher.request (C:\Users\TreNr\AppData\Roaming\Prisma\Studio\e5cd9139\runtime\index.js:78094:24)
prisma-client at async X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104367:25
prisma-client at async X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104350:22
prisma-client at async Photon.request (X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104391:34)
prisma-client at async PhotonService.respond (X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104569:38)
prisma-client at async Object.StudioServer2.onWSMessage [as callback] (X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104717:29) +30s
prisma-client { clientVersion: '2.13.1' } +5s
- 创建具有婚姻和用户之间 n 对 m 关系的数据库模式
...
model User {
id Int @id @default(autoincrement())
forename String
lastname String
marriages Marriage[]
}
model Marriage {
id Int @id @default(autoincrement())
users User[]
}
- 迁移并启动工作室
npx prisma migrate dev --preview-feature
npx prisma studio
创建 2 个用户并在他们之间结婚
查询用户
恐慌并出现以下错误 https://github.com/prisma/prisma-client-js/issues/955
思想
似乎与 prisma.user.findMany()
.
直接相关
用作查询时
Query: {
users: (_, __, context) => {
const pc: PrismaClient = context.prisma;
return pc.user.findMany({ include: { marriages: true } });
},
user: async (_, args, context) => {
const pc: PrismaClient = context.prisma;
const users = pc.user.findUnique({ where: { id: parseInt(args.id) }, include: { marriages: true } });
return users;
}
}
- 失败
query {
users {
id
marriages {
id
}
}
}
- 有效
query {
user(id: 1) {
id
marriages {
id
}
}
}
另一个观察:
只有结合 findMany 包含婚姻时才会发生。
users: (_, __, context) => {
const pc: PrismaClient = context.prisma;
return pc.user.findMany({ include: { marriages: true } });
}
如果不包括没有错误。如果它包含在 findUnique 中,它也不会起作用
上面观察到的问题似乎是最新版本中的错误。
重现步骤
日志
prisma-client { clientVersion: '2.13.1' }
prisma-client Error: PANIC: 1
prisma-client
prisma-client This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic.
prisma-client
prisma-client https://github.com/prisma/prisma-client-js/issues/new?body=Hi+Prisma+Team%21+My+Prisma+Client+just+crashed.+This+is+the+report%3A%0A%23%23+Versions%0A%0A%7C+Name++++++++++++%7C+Version++++++++++++%7C%0A%7C-----------------%7C--------------------%7C%0A%7C+Node++++++++++++%7C+v12.18.3+++++++++++%7C+%0A%7C+OS++++++++++++++%7C+undefined%7C%0A%7C+Prisma+Client+++%7C+2.13.1+++++++++++++%7C%0A%0A%0A%0A%23%23+Logs%0A%60%60%60%0A++prisma-client+%7B+clientVersion%3A+%272.13.1%27+%7D++%0A%60%60%60&title=PANIC%3A+1&template=bug_report.md
prisma-client
prisma-client If you want the Prisma team to look into it, please open the link above
prisma-client
prisma-client at NodeEngine.handleRequestError (C:\Users\TreNr\AppData\Roaming\Prisma\Studio\e5cd9139\runtime\index.js:26642:21)
prisma-client at C:\Users\TreNr\AppData\Roaming\Prisma\Studio\e5cd9139\runtime\index.js:27295:36
prisma-client at processTicksAndRejections (internal/process/task_queues.js:97:5)
prisma-client at async PrismaClientFetcher.request (C:\Users\TreNr\AppData\Roaming\Prisma\Studio\e5cd9139\runtime\index.js:78094:24)
prisma-client at async X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104367:25
prisma-client at async X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104350:22
prisma-client at async Photon.request (X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104391:34)
prisma-client at async PhotonService.respond (X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104569:38)
prisma-client at async Object.StudioServer2.onWSMessage [as callback] (X:\dev\familytreebackend\node_modules\@prisma\cli\build\index.js:104717:29) +30s
prisma-client { clientVersion: '2.13.1' } +5s
- 创建具有婚姻和用户之间 n 对 m 关系的数据库模式
...
model User {
id Int @id @default(autoincrement())
forename String
lastname String
marriages Marriage[]
}
model Marriage {
id Int @id @default(autoincrement())
users User[]
}
- 迁移并启动工作室
npx prisma migrate dev --preview-feature
npx prisma studio
创建 2 个用户并在他们之间结婚
查询用户
恐慌并出现以下错误 https://github.com/prisma/prisma-client-js/issues/955
思想
似乎与 prisma.user.findMany()
.
用作查询时
Query: {
users: (_, __, context) => {
const pc: PrismaClient = context.prisma;
return pc.user.findMany({ include: { marriages: true } });
},
user: async (_, args, context) => {
const pc: PrismaClient = context.prisma;
const users = pc.user.findUnique({ where: { id: parseInt(args.id) }, include: { marriages: true } });
return users;
}
}
- 失败
query {
users {
id
marriages {
id
}
}
}
- 有效
query {
user(id: 1) {
id
marriages {
id
}
}
}
另一个观察:
只有结合 findMany 包含婚姻时才会发生。
users: (_, __, context) => {
const pc: PrismaClient = context.prisma;
return pc.user.findMany({ include: { marriages: true } });
}
如果不包括没有错误。如果它包含在 findUnique 中,它也不会起作用
上面观察到的问题似乎是最新版本中的错误。