使用Prisma查询MongoDB嵌套对象时出现无效调用报错求助
Prisma查询MongoDB嵌套对象报错解决办法
问题场景
以下是对应的Prisma Schema及查询代码:
model Member { id String @id @default(auto()) @map("_id") @db.ObjectId bank BankInfo @@map("members") } type BankInfo { bankNo String }
查询代码:
const member = await this.prisma.member.findFirst({ where: { bank: { bankNo: 'test' } }, });
执行时触发错误:Error: Invalid prisma.member.findFirst() invocation:
解决方法
Prisma操作MongoDB嵌套文档时,必须使用点符号语法指定嵌套字段,不能用嵌套对象的写法。修改后的查询代码如下:
写法一:直接匹配值
const member = await this.prisma.member.findFirst({ where: { 'bank.bankNo': 'test' }, });
写法二:使用equals操作符(语义更明确)
const member = await this.prisma.member.findFirst({ where: { 'bank.bankNo': { equals: 'test' } }, });
原因说明
MongoDB本身查询嵌套文档的语法就是bank.bankNo这种点路径形式,Prisma对MongoDB的适配遵循这一规则,和关系型数据库的嵌套对象查询写法不同。建议使用最新稳定版Prisma以确保语法支持。
内容的提问来源于stack exchange,提问作者user8663822
相关产品推荐
相关产品推荐

