【发布时间】:2021-02-02 15:52:13
【问题描述】:
我正在使用 Prisma 为我的数据库数据生成架构和模型。
在那里,我定义了一个“用户”模型,其中包含这些数据(类型由 Prisma 自动生成):
type User {
name: string,
nickName: string,
sensitiveInfo1: string,
sensitiveInfo2: string
}
但是,当我的客户请求此数据时,我无法在响应负载中发送敏感信息。
Prisma 有一种非常方便的方式来定义自定义类型:
import { UserGetPayload } from "./prisma/src/generated/client"
// now I define a custom type
export type UserPublicInfo = UserGetPayload<{
select: {
name: true,
nickName: true,
}
}>
// this gives me the type:
// type UserPublicInfo {
// name: <whatever type name is in the schema>,
// nickName: <whatever type nickName is in the schema>
// }
现在,假设我已经从数据库中检索了一个 User 类型的用户实例。我不想以响应负载仅包含“UserPublicInfo”信息的方式将其转换为“UserPublicInfo”。
如果我像user as UserPublicInfo 那样投射用户类型的对象,则类型建议指向正确的方向,仅显示子类型的属性。但是,敏感数据仍然存在。
我是 javascipt/typescript 的初级人员,但我相信这与对象的原型有关。那我怎么能这样投射呢?
【问题讨论】:
标签: typescript casting type-conversion prisma prisma2