我正在使用 NextJS 框架和 Prisma 开发 ReactJS 项目来管理数据库的连接和查询。
在我的本地项目中,找到了支持模型,当我在 API 中使用它并构建我的项目时,一切正常。
但是,当我将项目推送到生产服务器(Plesk)时,构建会向我显示此打字稿错误,因为它找不到支持模型:
./src/pages/api/support/index.ts:27:26
Type error: Property 'support' does not exist on type 'PrismaClient<PrismaClientOptions, never, RejectOnNotFound | RejectPerOperation | undefined>'.
Run Code Online (Sandbox Code Playgroud)
该路径./src/pages/api/support/index.ts
是我要使用支持模型的地方
我的prisma.schema
:
datasource db {
provider = "mysql"
url = env("DATABASE_CONNECTION")
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @unique @default(autoincrement())
gender String?
firstName String
lastName String
email String @unique
phone String
birthday DateTime?
income Float? …
Run Code Online (Sandbox Code Playgroud) 如何使用一个查询在 prisma ORM 中更新插入多个字段?
我不想一一使用 upsert 字段。我可以通过一个查询更新插入所有这些内容吗?
正如标题所述,我在 Next JS 应用程序中使用 Prisma 2。我有一个非常简单的架构:
model User {
id Int @id @default(autoincrement())
firstName String
middleName String?
firstLastname String
secondLastname String?
email String
role String
group Group? @relation(fields: [groupId], references: [id])
groupId Int?
activity Activity? @relation(fields: [activityId], references: [id])
activityId Int?
createdOn DateTime @default(now())
updatedOn DateTime @default(now())
}
model JobTitle {
id Int @id @default(autoincrement())
name String
createdOn DateTime @default(now())
updatedOn DateTime @default(now())
}
model Group {
id Int @id @default(autoincrement())
name String
users User[]
createdOn DateTime @default(now())
updatedOn DateTime …
Run Code Online (Sandbox Code Playgroud) 我试图在 Prisma ORM 的一个模型中建立两个 1:1 关系,但出现以下错误:
验证模型“Person”时出错:检测到不明确的关系。模型中的字段
placeOfBirth
和字段均指的是。请通过添加 为它们提供不同的关系名称。placeOfDeath
Person
Place
@relation(<name>)
我的棱镜架构:
model Place {
id Int @id @default(autoincrement())
name String
persons Person[]
}
model Person {
id Int @id @default(autoincrement())
name String
placeOfBirthId Int
placeOfDeathId Int
placeOfBirth Place @relation(fields: [placeOfBirthId], references: [id])
placeOfDeath Place @relation(fields: [placeOfDeathId], references: [id])
}
Run Code Online (Sandbox Code Playgroud)
完全不明白。
给出以下架构。如何使用 prisma2 客户端查询每个存储库上的最新提交?
model Commit {
id String @default(uuid()) @id
date DateTime @default(now())
}
model Branch {
id String @default(uuid()) @id
commit Commit @relation(fields: [commitId],references: [id])
commitId String
repository Repository @relation(fields: [repositoryId],references: [id])
repositoryId String
}
model Repository {
id String @default(uuid()) @id
}
Run Code Online (Sandbox Code Playgroud) 我对 Prisma 代码生成在生产中的工作原理感到困惑。Prisma CLI 应该安装在 devDependency 中,但该npx prisma generate
命令需要在生产中可用,因为生成的代码对于应用程序是必需的。我该如何解决这个问题?我尝试运行npm i --production
和npx prisma generate
,这导致了 npx 尝试自动安装 prisma 并获取 Prisma 1 而不是 Prisma 2 的预期问题,然后期待一个不存在的 prisma.yml 文件。
我遇到了一个问题,我需要通过用户名和电子邮件检查用户是否存在,因为两者都是数据库中的唯一字段,但我收到错误。
Argument where of type UserWhereUniqueInput needs exactly one argument, but you provided username and email. Please choose one.
那么,有没有办法只执行一次这个查询呢?而不是像下面这样为每个运行一个
const user = await prisma.user.findUnique({
where: {
username,
email,
},
});
Run Code Online (Sandbox Code Playgroud)
不是这样的
const user = await prisma.user.findUnique({
where: {
username,
},
});
const user = await prisma.user.findUnique({
where: {
email,
},
});
Run Code Online (Sandbox Code Playgroud) 我在 Prisma 中的模型关系并不那么简单。用户 --< 注册 >-- 课程,我不知道如何确保课程标题字段在该用户创建的课程中是唯一的。换句话说,我不希望一个用户创建多个具有相同名称的课程。但我希望不同的创建者以相同的名称存在课程。(只有创建者在注册中具有 TEACHER 角色)
我面临的问题是,我不知道在哪里定义唯一属性以及要包含哪些字段。我想要对其进行唯一约束的字段(课程名称、具有教师角色的成员)跨不同的模型。
model User {
id Int @id @default(autoincrement())
email String @unique
passwordHash String
enrollments Enrollment[]
}
model Course {
id Int @id @default(autoincrement())
name String
members Enrollment[]
}
model Enrollment {
role UserRole @default(STUDENT)
// Relation Fields
userId Int
courseId Int
user User @relation(fields: [userId], references: [id])
course Course @relation(fields: [courseId], references: [id])
@@id([userId, courseId])
@@index([userId, role])
}
Run Code Online (Sandbox Code Playgroud) 如何在Prisma.js
不重置整个数据库的情况下对数据库进行更改?
如果我使用过这个命令
npx prisma migrate dev --name role-makeOptional-NormalizedName
Run Code Online (Sandbox Code Playgroud)
我将丢失数据库中的所有数据,但不会丢失我的数据。
就我而言,我想更改String
为文件String?
中schema.prisma
NormalizedName String? @unique @db.VarChar(64)
Run Code Online (Sandbox Code Playgroud)
是否有适当的命令来避免丢失数据?
我有一个包含多个表的数据库,需要经常查询这些表,LEFT JOIN
以便结果包含来自其他表的聚合数据。我的 Prisma 架构的片段:
model posts {
id Int @id @unique @default(autoincrement())
user_id Int
movie_id Int @unique
title String @db.Text
description String? @db.Text
tags Json?
created_at DateTime @default(now()) @db.DateTime(0)
image String? @default("https://picsum.photos/400/600/?blur=10") @db.VarChar(256)
year Int
submitted_by String @db.Text
tmdb_rating Decimal? @default(0.0) @db.Decimal(3, 1)
tmdb_rating_count Int? @default(0)
}
model ratings {
id Int @unique @default(autoincrement()) @db.UnsignedInt
entry_id Int @db.UnsignedInt
user_id Int @db.UnsignedInt
rating Int @default(0) @db.UnsignedTinyInt
created_at DateTime @default(now()) @db.DateTime(0)
updated_at DateTime? @db.DateTime(0)
@@id([entry_id, user_id])
}
Run Code Online (Sandbox Code Playgroud)
如果我想在查询时返回平均评分posts
,我可以使用如下查询: …