在未定义值的情况下使用 prisma findFirst() 时如何不 return 值

How to not return a value when using prisma findFirst() where the value is undefined

我正在使用新数据库,因为我认为它使用起来很方便,但是当用户注销时,req.session.userId 将是未定义的。因此,当我将 findFirst() 函数与 { where : req.session.userId } 一起使用时。如果 req.session.userId 未定义。 findFirst() 仍然是 return 第一条记录 table。 当 req.session.userId 未定义时,如何解决 findFirst() 不能 return 的值。

它有点等同于 MySQL 查询命令。

SELECT * FROM user WHERE id = req.session.userId;

我的 Prisma 查询代码。

app.use(async (req,res, next)=>{
  let user

  user = await database.user.findFirst({where:{
    id: req.session.userId
  }})

  req.user = user
  next()
})

在这种情况下,您始终可以选择不调用数据库:

app.use(async (req,res, next)=>{
  let user

  user = req.session.userId && await database.user.findFirst({where:{
    id: req.session.userId
  }})

  req.user = user
  next()
})

只有当 userId 未定义时,您才会调用您的数据库。如果它是未定义的,你的响应将有 user: undefined,除非你想在这种情况下发送一些其他响应,但你的用户初始值设置应该不同。

app.use(async (req,res, next)=>{
const  user = await database.user.findFirst({where:{{
   OR : [
     {
   id: req.session.userId
 },
{
   id: 'undefined'
 }
   ]
}})

 req.user = user
 next()
})