使用 Prisma 的嵌套创建查询返回未定义
Posted
技术标签:
【中文标题】使用 Prisma 的嵌套创建查询返回未定义【英文标题】:Nested create query using Prisma returns undefined 【发布时间】:2021-12-21 22:06:24 【问题描述】:我正在开发一个使用 Graphql Prisma 和 Postgres 作为后端的锻炼应用程序。 到目前为止,我的棱镜架构如下:
// 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"
datasource db
provider = "postgresql"
url = env("DATABASE_URL")
model Exercise
id Int @id @default(autoincrement())
name String
numSets Int
holdTime Int?
owner Workout? @relation(fields: [workoutId], references: [id])
workoutId Int?
model Workout
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
category String
exercises Exercise[]
该模式定义了一个 Workout 对象,该对象接受一个类别和一个练习列表。我正在尝试使用 Prisma 的嵌套创建查询创建包含对象列表的锻炼,但是未创建锻炼列表。我无法判断我的架构或脚本是否有问题。
我用来测试创建的脚本是:
const PrismaClient = require("@prisma/client")
const prisma = new PrismaClient()
async function main()
const newWorkout = await prisma.workout.create(
data:
category: 'Push',
exercises:
create: [
name: "pushup",
numSets: 5
,
name: "headstand",
numSets: 3,
holdTime: 30
]
)
console.log(newWorkout)
const workout = await prisma.workout.findUnique(
where:
id: 1
)
console.log(workout.exercises)
main()
.catch(e =>
throw e
)
.finally(async () =>
await prisma.$disconnect()
)
打印语句的输出:
console.log(newWorkout): " 编号:1, 创建于:2021-11-09T07:03:40.844Z, 更新时间:2021-11-09T07:03:40.848Z, 类别:“推” "
console.log(workout.exercises): “未定义”
【问题讨论】:
【参考方案1】:Prisma 默认不获取 relation
字段。因此,exercises
字段不会与workout
记录一起返回。这适用于所有查询,包括 create
和 find
。
要获取exercises
字段,您应该使用include
或select
。如果要返回关系中的所有字段,则首选include
,而select
可让您指定要返回的确切字段。
这是返回 excercises
字段的代码的更新版本:
const newWorkout = await prisma.workout.create(
data:
category: 'Push',
exercises:
create: [
name: "pushup",
numSets: 5
,
name: "headstand",
numSets: 3,
holdTime: 30
]
,
include:
exercises: true
)
console.log(newWorkout)
let workout = await prisma.workout.findUnique(
where:
id: 1
,
include:
exercises: true
)
console.log(workout.exercises)
【讨论】:
感谢您使用包含的作品,这正是我所需要的! 太棒了!乐于助人:)以上是关于使用 Prisma 的嵌套创建查询返回未定义的主要内容,如果未能解决你的问题,请参考以下文章
Prisma:字段...未在...输入类型或类型中定义...预期但未提交对象
无法运行 prisma deploy:错误:未定义的集群不存在