如何定位 Prisma 中的字段并获取平面值数组而不是对象数组

Posted

技术标签:

【中文标题】如何定位 Prisma 中的字段并获取平面值数组而不是对象数组【英文标题】:How to target a field in Prisma and get a flat array of values rather than an array of objects 【发布时间】:2021-07-23 00:38:48 【问题描述】:

我刚开始使用 Primsa 2,所以我仍然是个菜鸟,但我想做的只是根据我从特定字段获得的值创建一个平面字符串数组 (Array<number>)。现在,当我定位该字段时,它会给我一个这样的对象数组:userIds: [ issueId: 1, userId: 1 ]

我想要的只是从userId 键和数组返回的值,就像userIds: [ 1 ] 一样。在查询完成后,我可以使用一些格式化代码来解决这个问题:

const issues = project.issues.map(issue => ( ...issue, userIds: [...issue.userIds.map((id) => id.userId)] ))
const _project =  ...project, issues 

但是,这似乎不是最理想的解决方案。如果这是唯一可行的方法,但我假设 Prisma 具有查询功能,那么我可以仅在查询中执行此操作吗?

作为参考,我的查询目前如下所示:

const project = await prisma.project.findFirst(
  where:  id: req.currentUser.projectId ,
  include:  users: true, issues:  include:  userIds: true   ,
)

提前致谢!

【问题讨论】:

【参考方案1】:

你能展示你的架构吗?也许您可以对关系进行不同的建模。但是,除非您提供一个字段 userIds,它是一个平面数组而不是其他关系的字段,否则它将作为您已经拥有的对象列表返回。

【讨论】:

以上是关于如何定位 Prisma 中的字段并获取平面值数组而不是对象数组的主要内容,如果未能解决你的问题,请参考以下文章

在 prisma 中循环替换查询

从 Prisma2 中的辅助表中获取数据

prisma2:如何通过 prisma.user.findMany() 中的非必填字段进行过滤?

从 Prisma 中的多对多表中获取元信息

Prisma 如何仅更新 update() 中的某些模型字段

为啥我无法使用 GO 客户端在我的 prisma 查询中获取相关字段?