node.js - Nodejs Prisma 包含不尊重祖父母身份
问题描述
我在 nodejs 中使用 prisma orm 并具有以下架构(示例)
model User
{
id Int @id @default(autoincrement())
answers Answer[]
}
model Product
{
id Int @id @default(autoincrement())
questions Question[]
}
model Question
{
id Int @id @default(autoincrement())
products Product[]
answers Answer[]
}
model Answer
{
id Int @id @default(autoincrement())
userId Int
user User @relation(fields: [userId], references: [id])
productId Int
product Product @relation(fields: [productId], references: [id])
questionId Int
question Question @relation(fields: [questionId], references: [id])
}
是否可以获得带有问题的产品列表以及每个问题的最新答案?
我遇到的问题是,嵌套包含不尊重祖父母身份。
例如,在这段代码中:
let products = await prisma.product.findMany({
include: {
questions: {
include: {
answers: true
}
}
}
})
每个问题的返回答案也不属于我希望他们属于的产品。
我错过了什么?
解决方案
据我所知,无法进行您要查找的查询(嵌套包含的第二层也尊重祖父母 ID)。
一种可能的解决方法是将答案与查询中的问题一起包含,product
而不是将其嵌套在questions
. 然后你可以在应用层合并问题和答案(在后端或前端,以最合适的为准)。
代码看起来像这样
let products = await prisma.product.findMany({
include: {
questions: true,
answers: true, // Assuming the relation field is called answers. You confirmed you accidentally forgot to mention the field in your schema.
},
});
// In Javascript/Typescript: For every product, iterate across every answer and add to the questions array.
如果产品/答案的数量不是很大,这种解决方法应该可以很好地工作。
推荐阅读
- javascript - Laravel + React:在 JSON 响应中传递函数
- sql - SQL 触发器 - 条件和数学运算
- git - 无法使用 git add 添加文件
- php - 回答:使用 php 将表单数据保存到文本文件
- php - 如何使用 PHP 将具有相同重复元素的子数组的数组输出到 XML 中
- python - 如何暂停使用 MCI 播放的歌曲?(使用线程或多处理)
- c# - 如何在为不同类型的属性创建唯一约束时解决错误“未找到隐式类型数组的最佳类型”?
- python - 我收到以下错误:tensorflow.python.framework.errors_impl.InvalidArgumentError
- python - Telebot 看到新消息时如何退出脚本
- python - lib64/libc.so.6:未找到版本“GLIBC_2.18”(/opt/extensions/cloudwatch_lambda_agent 需要)