我将 Prisma 与 NextJs 一起使用。
在我的 API 中,我向后端发送与数据库中对象 ID 相对应的数字列表。
举个例子,如果我收到 list [1, 2, 12]
,我想返回 id 为 1、2 或 12 的对象
这是更复杂的查询的一部分(排序/计数/...),但我在第一步阻止的是获取元素列表
到目前为止我有这个:
import { PrismaClient, Prisma } from '@prisma/client'
const prisma = new PrismaClient()
export default async function handler(req, res) {
if (req.method !== 'POST') {
res.status(400).send({ message: 'Only POST requests allowed for this route' })
} else {
const { signes_id } = req.query
const signes_array = signes_id.split(",").map(function(item) {
return parseInt(item)
})
console.log(signes_array)
const ret = await …
Run Code Online (Sandbox Code Playgroud) 当我使用 prismagenerate 生成 prisma 客户端时,我得到了一个包含数据库中所有类型的 index.d.ts 。但问题是所有类型都是“单一”的并且没有任何关系。当我查询类似的东西时
prisma.users.findMany({
[... ]
include: {
cars: {
[...]
}}});
Run Code Online (Sandbox Code Playgroud)
prisma 使用正确的类型动态输入响应
users & {
cars: cars & {
[...]
};
}
Run Code Online (Sandbox Code Playgroud)
所以一切正常,我有自动完成功能,除非我想将此变量传递给另一个方法,我想输入参数,所以我必须创建自己的类型用作方法参数。
type prismaUsers = users & {
cars?: cars & {
[...]
};
}
Run Code Online (Sandbox Code Playgroud)
但我问是否有一种方法可以从 prisma 获取“完整”类型,以避免我像在用户示例中那样创建带有可选子元素的所有“完整”类型。或者也许我做错了,还有其他方法可以做?
当我运行 GraphQL 查询时,我从 prisma 收到此错误消息。
Environment variable not found: DATABASE_URL.\n --> schema.prisma:6\n | \n 5 | provider = \"postgresql\"\n 6 | url = env(\"DATABASE_URL\")\n | \n\nValidation Error Count: 1",
Run Code Online (Sandbox Code Playgroud)
起初,我的任何项目文件夹中都没有 .env 文件,然后我使用数据库 URL 的链接添加了它,但仍然无法正常工作。这是文件夹结构:
这就是我的.env
文件中的内容 -
DATABASE_URL="postgres://postgres:mypassword@db.pqtgawtgpfhpqxpgidrn.supabase.co:5432/postgres"
Run Code Online (Sandbox Code Playgroud) 我可以在客户端获取模型的枚举值列表,例如选择选项吗?
示例枚举
enum user_type {
superadmin
admin
user
}
Run Code Online (Sandbox Code Playgroud)
我希望将其作为客户端的选择选项。我怎样才能将它们作为 JSON 数据获取?
我正在使用 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、postgres、docker、kubernets。
\nnpx prisma 迁移开发工作正常。
\n和npx prisma 生成产生以下输出:
\n\xe2\x9c\x94 Generated Prisma Client (2.23.0) to ./node_modules/@prisma/client in 68ms\nYou can now start using Prisma Client in your code. Reference: https://pris.ly/d/client\n\nimport { PrismaClient } from '@prisma/client'\nconst prisma = new PrismaClient()\n
Run Code Online (Sandbox Code Playgroud)\n但是当我尝试在我的路线文件中使用时产生错误:
\n新路由.ts
\nimport { PrismaClient } from '@prisma/client';\n\nconst prisma = new PrismaClient();\n
Run Code Online (Sandbox Code Playgroud)\n我的泊坞窗文件:
\nFROM node:alpine\n\nWORKDIR /app\nCOPY package.json .\nRUN npm install --only=prod\nCOPY . .\n\nCMD ["npm", "start"]\n
Run Code Online (Sandbox Code Playgroud)\n prisma db push
和 和有什么不一样prisma migrate dev
?我什么时候应该使用其中一种而不是另一种。文档说 prisma db Push 仅与模式原型有关,我不明白这是什么意思。
自从我迁移到新的 Apple Silicon 架构后,我使用 nextjs 和 postgres 进行的 docker 设置就不再工作了。我使用prisma的nextjs服务器无法找到docker内的数据库。
prisma 客户端无法通过端口 5432 访问 postgres 数据库。
无法访问数据库服务器
test-postgres
:5432
迁移也不起作用并返回上述相同的错误。
docker-compose run --publish 5555:5555 next npx prisma migrate dev
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
postgres:
container_name: 'test-postgres'
restart: unless-stopped
image: 'postgres:13'
ports:
- '15432:5432'
volumes:
- 'pgdata:/var/lib/postgresql/data/'
environment:
POSTGRES_PASSWORD: postgres
Run Code Online (Sandbox Code Playgroud)
.env
DATABASE_URL="postgres://postgres:postgres@localhost:15432/postgres"
Run Code Online (Sandbox Code Playgroud)
我还将arm二进制目标添加到schema.prisma schema.prisma
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "debian-openssl-1.1.x", "linux-arm-openssl-1.1.x", "linux-musl"]
previewFeatures = ["orderByRelation", "selectRelationCount"]
}
Run Code Online (Sandbox Code Playgroud)
postgres 容器实际上正在运行,我可以通过 Docker 桌面仪表板看到它。我在 postgres 容器内注意到的一件事是这个错误:
2021-07-21 12:52:58.927 UTC [76] ERROR: relation …
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 ×10
node.js ×4
next.js ×3
prisma2 ×3
docker ×2
postgresql ×2
apple-m1 ×1
javascript ×1
kubernetes ×1
reactjs ×1
sql ×1
typescript ×1