gpt4 book ai didi

postgresql - 使用 Prisma 的嵌套创建查询返回未定义

转载 作者:行者123 更新时间:2023-12-05 05:53:26 28 4
gpt4 key购买 nike

我正在开发一款使用 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()
})

打印语句的输出:

控制台日志(新锻炼):“{编号:1,创建于:2021-11-09T07:03:40.844Z,更新时间:2021-11-09T07:03:40.848Z,类别:“推送”}”

console.log(锻炼.练习):“未定义”

最佳答案

Prisma 默认不获取 relation 字段。因此,exercises 字段不会随 workout 记录一起返回。这适用于所有查询,包括 createfind

要获取 exercises 字段,您应该使用 includeselect .如果您想返回关系中的所有字段,则首选 include,而 select 允许您指定要返回的确切字段。

这是返回 exercises 字段的代码的更新版本:

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)

关于postgresql - 使用 Prisma 的嵌套创建查询返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69894113/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com