有啥方法可以在 Prisma 中使用嵌套对象处理数组?

Posted

技术标签:

【中文标题】有啥方法可以在 Prisma 中使用嵌套对象处理数组?【英文标题】:Is any way to work arrays with nested objects in Prisma?有什么方法可以在 Prisma 中使用嵌套对象处理数组? 【发布时间】:2020-03-07 17:03:20 【问题描述】:

我是 Prisma 的新手,我已阅读文档并做过一些小项目。

现在我在一个建筑应用程序的大项目中,但我遇到了它的架构问题。正如您在下面看到的,我有一个名为 GraphicColumn 的类型,在那里我保存了 Architectural 模型的某些列的数据,但是每种模型的列数可能会有所不同,并且这些列有多个数据条目要保存,所以我正在尝试做下一件事:

type GraphicColumn 
id: ID! @id
data: [
  column: Int!
  columnData: [Float]
]

如您所见,在对象中,它将是指定列的编号和该列的数据值,因此它是第 1 列的对象和它的数据的 Int 值,等等为第 2 列、第 3 列开启...

每个模型的列数可能在 4 到 6 列之间变化,但我在运行数据定义时遇到错误 棱镜部署。错误信息如下:

ERROR: Syntax error while parsing GraphQL query. Invalid input "\n  id: ID! @id\n  name: String!g\n", expected IgnoredNoComment, ImplementsInterfaces, DirectivesConst or FieldDefinitions (line 1, column 11):

type User 
        ^


"data": 
  "deploy": null
,
"errors": [
  
    "locations": [
      
        "line": 2,
        "column": 9
      
    ],
    "path": [
      "deploy"
    ],
    "code": 3017,
    "message": "Syntax error while parsing GraphQL query. Invalid input \"\\n  id: ID! @id\\n  name: String!g\\n\", expected IgnoredNoComment, ImplementsInterfaces, DirectivesConst or FieldDefinitions (line 1, column 11):\ntype User \n          ^",
    "requestId": "local:ck2sd5dbg000i0773z3pkpwx9"
  
],
"status": 200

你知道我该如何替换它吗 一些有效的定义?

【问题讨论】:

【参考方案1】:

您要做的是将 GraphicColumn 类型链接到一个或多个 ColumnData 类型。这是一个关系,有一定的语法

关系定义了两种类型之间连接的语义。 关系中的两种类型通过关系字段连接。

您使用关系语法描述的嵌套数据可能如下所示:

type GraphicColumn 
   id: ID! @id
   data: [ColumnData!]! @relation(link: TABLE, name: "GraphicColumnData")


type ColumnData 
   id: ID! @id
   column: Int!
   columnData: [Float]

有关数据建模和架构设计的更多信息,您可以查看: https://www.prisma.io/docs/datamodel-and-migrations/datamodel-mysql-knul/#relations

【讨论】:

以上是关于有啥方法可以在 Prisma 中使用嵌套对象处理数组?的主要内容,如果未能解决你的问题,请参考以下文章

Nexus-prisma:排序嵌套连接

使用 Prisma + MongoDB + GraphQL 的嵌套关系返回 null

如何使用nexus-prisma做一个嵌套的变异解析器

Prisma 嵌套创建引发未知 arg 错误,而 prisma 示例工作

使用 prisma graphql api 在嵌套 js 中进行 e2e 测试

使用 prisma,如何从嵌套写入中访问新创建的记录(先更新,然后在其中创建)