You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:35:25