在Next.js中使用Prisma根据含唯一名称的数组批量更新用户记录
嘿,这就帮你搞定批量更新的问题!
首先直接给你答案:要匹配数组里的多个用户名,你需要用Prisma的in操作符,这个写法在PostgreSQL下完全没问题,因为PostgreSQL原生就支持IN查询来匹配多个值。
完整的可运行代码示例
const arr = ['Joe', 'Mark']; const update = await prisma.user.updateMany({ where: { name: { in: arr } // 核心就是这里的in操作符,把数组传进去就行 }, data: { notifications: { push: "Hello" } } });
再给你拆解下关键点:
in操作符的作用:Prisma会把这个条件转换成SQL里的WHERE name IN ('Joe', 'Mark'),PostgreSQL对这种语法支持得很好,不用担心兼容性问题。push更新的前提:只要你在Prisma Schema里把notifications定义成数组类型(比如String[]),Prisma的push操作就会自动对应PostgreSQL的数组追加逻辑,帮你把'Hello'加到每个匹配用户的notifications数组里。
顺便提下Schema的正确配置(避免踩坑)
确保你的user模型里notifications字段是数组类型,比如这样:
model User { id Int @id @default(autoincrement()) name String @unique notifications String[] // 对应PostgreSQL的text[]数组类型 // 其他字段按需添加... }
这样运行代码后,Joe和Mark的notifications字段都会多一条'Hello'啦~
内容的提问来源于stack exchange,提问作者jack07Code
相关产品推荐
相关产品推荐

