如何在Prisma中更新MongoDB存储的布尔值?
Prisma + MongoDB 切换布尔字段值的实现方法
要实现isOnline布尔值在true和false之间切换,你可以用以下两种方案:
方案一:先查询再更新(简单直观)
先获取用户当前的isOnline值,再反转后更新:
// 查询目标用户的当前状态 const user = await prisma.user.findUnique({ where: { userToken: token }, select: { isOnline: true } }); if (user) { // 切换布尔值并更新 const updatedUser = await prisma.user.update({ where: { userToken: token }, data: { isOnline: !user.isOnline } }); }
方案二:直接用MongoDB运算符更新(高效,一次数据库操作)
借助MongoDB的$not运算符,直接在数据库层面反转布尔值,无需额外查询:
const updatedUser = await prisma.user.update({ where: { userToken: token }, data: { isOnline: { $not: true } } });
原代码未生效的排查点
你之前的代码直接将isOnline设为true但没生效,可能是以下原因:
- 传入的
token没有匹配到任何用户文档,导致更新操作无作用 - Prisma Schema中
isOnline字段的类型定义错误,需确保是Boolean类型且默认值设置正确:model User { userToken String @unique @id isOnline Boolean @default(false) // 其他字段... } - 未正确处理异步操作(比如调用时遗漏
await)
内容的提问来源于stack exchange,提问作者Sukhchain Singh
相关产品推荐
相关产品推荐

