NodeJS 在Prisma中返回空值的Express API补丁日期

vlju58qv  于 2022-11-04  发布在  Node.js
关注(0)|答案(1)|浏览(156)

这是我的问题:我有一个PATCH API请求,它将PostgreSQL表中现有的dateofbirth条目替换为null,但在PATCH主体中没有提供dateofbirth(例如,编辑其他字段(firstname)时)。
在我的PostgreSQLCustomers表中,dateofbirth字段的类型为datetime。下面用typescript编写的Prisma函数对我的PostgreSQL Customers表执行Update

export async function editCustomer(id: number, customerNewInfo: {firstname: string, lastname: string, email: string, dateofbirth: string}) {
    await prisma.customers.update({
   where: {
    id: id
  },
      data: {
        firstname: customerNewInfo.firstname,
        lastname: customerNewInfo.lastname,
        email: customerNewInfo.email,
        dateofbirth: new Date(customerNewInfo.dateofbirth)

      },
    })
  }

正如您所猜测的,当我不提供dateofbirth时,new Date(customerNewInfo.dateofbirth)实际上是将null传递给Prisma。如果我取出new Date(),则会在数据库端得到一个错误,说明该字段为datetime,而我提供了String
如何在发送PATCH API调用时强制dateofbirthdatetime类型,同时不将现有条目替换为null

2nbm6dog

2nbm6dog1#

如果有人想知道,这里是解决方案:

dateofbirth: customerNewInfo.dateofbirth != null ? new Date(customerNewInfo.dateofbirth) : undefined

这来自Prisma文档:
将字段值设置为undefined等同于在更新查询中根本不包括电子邮件字段
来源:Prisma Client Documentation

相关问题