使用 prisma 的 typescript 类型转换

Posted

技术标签:

【中文标题】使用 prisma 的 typescript 类型转换【英文标题】:typescript type conversion with prisma 【发布时间】:2021-10-15 18:14:56 【问题描述】:

我想使用 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'

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

【问题讨论】:

【参考方案1】:

您可以更新 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的原始定义。

【讨论】:

以上是关于使用 prisma 的 typescript 类型转换的主要内容,如果未能解决你的问题,请参考以下文章

用于解析器 GraphQL 瑜伽的 TypeScript 类型(在上下文中使用 prisma2)

TypeGraphql 和 Prisma 2 类型冲突

并行使用 prisma 和 typescript 模型

将自定义 GraphQL 解析器和类型添加到 Prisma/Nexus 架构中

问:使用 context.prisma 时的智能感知

如何使用 typegraphql-prisma 保护用户数据