在Prisma中如何将DateTime字段设置为当前时间?
在Prisma ORM中更新DateTime字段为当前时间的正确方式
你遇到的问题是用now()无法正确设置deleted_at为当前时间,这是因为Prisma有专门的内置函数来生成当前时间,或者你也可以直接使用JavaScript的Date对象,以下是两种可行方案:
方案1:使用Prisma内置的DateTime.now()函数
Prisma提供了内置的时间生成函数,需要通过Prisma.DateTime来调用:
首先确保你已经导入了Prisma相关模块:
import { Prisma } from '@prisma/client';
然后在update操作的data中设置:
deleted_at: Prisma.DateTime.now()
方案2:直接使用JavaScript的new Date()
Prisma支持直接接收JavaScript的Date对象,所以也可以这样写:
deleted_at: new Date()
修正后的完整控制器代码
import { Prisma } from '@prisma/client'; import { Response } from 'express'; import { IEmployee, ICompany } from './your-types-path'; // 替换为你的类型文件路径 export const DeleteCompany = async (req:IEmployee, res:Response) => { const data:ICompany = req const deletedCompany = await prisma.employee.update({ where: { id: Number(data.id) }, data: { // 二选一即可 deleted_at: Prisma.DateTime.now() // 或者 deleted_at: new Date() } }) return res.status(200).json(deletedCompany) }
另外补充一点:如果是软删除场景,建议把模型中的deleted_at字段改为可选(未删除时为null),更符合业务逻辑:
model Employee { id Int @id @default(autoincrement()) name String created_at DateTime deleted_at DateTime? // 添加问号标记为可选字段 }
内容的提问来源于stack exchange,提问作者Hermes Santos
相关产品推荐
相关产品推荐

