【发布时间】:2022-02-08 19:35:11
【问题描述】:
我使用的是 Prisma 版本 3.8.1。 Prisma 客户端不会在 TS 中将 User.oauthData 属性标记为可为空。有人可以帮忙吗? Prisma 架构和生成的 SQL 文件如下:
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "rhel-openssl-1.0.x"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model Account {
id BigInt @id
createdAt DateTime @db.Timestamptz(3) @default(now())
updatedAt DateTime @db.Timestamptz(3) @updatedAt
name String
users User[]
}
model User {
id BigInt @id
createdAt DateTime @db.Timestamptz(3) @default(now())
updatedAt DateTime @db.Timestamptz(3) @updatedAt
accountId BigInt
account Account @relation(fields: [accountId], references: [id])
fullName String
email String
oauthData Json?
}
-- CreateTable
CREATE TABLE "Account" (
"id" BIGINT NOT NULL,
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMPTZ(3) NOT NULL,
"name" TEXT NOT NULL,
CONSTRAINT "Account_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "User" (
"id" BIGINT NOT NULL,
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMPTZ(3) NOT NULL,
"accountId" BIGINT NOT NULL,
"fullName" TEXT NOT NULL,
"email" TEXT NOT NULL,
"oauthData" JSONB,
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
);
-- AddForeignKey
ALTER TABLE "User" ADD CONSTRAINT "User_accountId_fkey" FOREIGN KEY ("accountId") REFERENCES "Account"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
我使用的是 Prisma 版本 3.8.1。 Prisma 客户端不会在 TS 中将 User.oauthData 属性标记为可为空。有人可以帮忙吗? Prisma 架构和生成的 SQL 文件如下:
【问题讨论】:
-
那么TS类型是怎样的呢?你跑
prisma generate了吗? -
我确实运行了 prisma generate。 TS 类型将其标记为非可选
-
可选和可空是不同的东西。你能只显示我们正在谈论的类型吗?我已经在本地尝试了您的架构,它工作正常,类型可以按预期为空。
-
在哪个文件中可以找到生成的用户类型的代码?尽管基于 VS 代码智能感知弹出窗口,但它肯定被标记为不可为空。
-
在可以看到弹出窗口的地方按 F12。基本上应该在
node_modules/.prisma/client/index.d.ts