温馨提示:本文翻译自stackoverflow.com,查看原文请点击:graphql - Is any way to work arrays with nested objects in Prisma?
graphql graphql-js prisma prisma-graphql

graphql - 有什么办法可以处理Prisma中带有嵌套对象的数组?

发布于 2020-04-15 10:04:50

我是Prisma的新手,我已经阅读了文档并完成了一些小项目。

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

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

如您所见,在对象中,它将是指定列的编号和该列的数据值,因此,它是第1列的对象,并且是其数据的Int值的数量,以此类推。第2栏,第3栏...

每个模型可能在4到6列之间变化,但是运行prisma部署的数据定义一时出现错误。错误消息如下:

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
}

您知道如何将其替换为可行的定义吗?

查看更多

提问者
Elias Ramirez
被浏览
34
realAlexBarge 2020-02-03 00:59

您想要做的是将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