使用 prisma 进行打字稿类型转换

typescript type conversion with prisma

我想使用 Typescipt 和 Prisma ORM 更改我的 'createdAt' 格式。

const post = await prisma.post.find({ where: { id: 1 }})

post.createdAt = moment(post.createdAt)

return post

// Type 'string' is not assignable to type 'Date'

我完全理解为什么会出现这个错误,但我不知道如何有效地解决它。 我现在该怎么办? 每次从数据库调用数据时,我应该做一个新的接口还是自定义类型?

您可以更新 Prisma 客户端为 Post.createdAt 生成的类型定义以适应 moment 对象类型。这就是它的样子

import { Post } from "@prisma/client";  // Prisma client generated definition of Post

type customPost = Omit<Post, 'createdAt'> & {
  createdAt: Date | moment.Moment | string  // moment constructor returns object of type moment.Moment, so adding that in addition to string.
}

async function foo() {
    const post : customPost = await prisma.post.find({ where: { id: 1 }})
    post.createdAt = moment(post.createdAt)  
    return post
}

omit utility用于先擦除createdAt的原定义,再重新定义