一对多关系未显示在对象放大架构定义中

Nat*_*ili 3 amazon-web-services amplifyjs graphql-js aws-amplify graphql-schema

我刚开始将 amplify 与 GraphQL 结合使用。我正在设置数据库模式并在运行放大推送后自动生成函数。

\n

我想要实现但不知道如何实现的目标

\n
    \n
  1. 我希望能够在 getUser 返回的对象中获取用户的所有连接信息(一对一和一对多关系)
  2. \n
  3. 我希望仍然能够获取 userByUserName 并查看所有连接的一对多关系
  4. \n
\n

当调用API生成的函数来获取用户时,

\n
let user = await API.graphql(graphqlOperation(getUser,{id:userId}))\n
Run Code Online (Sandbox Code Playgroud)\n

我正在获取一个用户对象,但是,它看起来像这样 - 即使我确信数据库中的数据设置正确。

\n
buttons: {nextToken: null} -- WANT THIS TO INCLUDE ACTUAL INFORMATION ABOUT BUTTONS CONNECTED TO THIS USER\ncreatedAt: "2020-09-02T23:41:12.278Z"\ncustomStyles: {id: "e3d1bbef-ec6f-4a6d-9b5d-e693e890d4e0", bgColor: "F9FF9F", bgBtnColor: "FFFFFF", bgBtnHoverColor: "000000", textColor: "000000", \xe2\x80\xa6}\ndefaultStyles: null\nemail: "nata@email.edu"\nfirstName: "Nata"\nid: "d683a6bb-383e-4cf1-943a-05b3da4e5cc3"\nlastName: "Vache"\nsocialNetwork: {nextToken: null} -- WANT THIS TO INCLUDE ACTUAL INFORMATION ABOUT SOCIAL NETWORKS CONNECTED TO THIS USER, THE SAME WAY AS FOR EXAMPLE customStyles IS SHOWN. \nupdatedAt: "2020-09-02T23:41:12.278Z"\nuserName: "Nata568"\n\ntype User @model @key(name: "byUserName", fields: ["userName"], queryField: "userByUserName"){\n  id: ID!\n  firstName: String!\n  lastName: String!\n  userName: String!\n  email: String!\n  socialNetwork: [UserSocialNetwork] @connection(keyName: "UserSocialNetworkUser", fields: ["id"])\n  buttons: [Button] @connection(keyName: "ButtonUser", fields: ["id"])\n  defaultStyles: DefaultStyle @connection\n  customStyles: CustomStyle @connection\n}\n\ntype UserSocialNetwork @model @key(name: "UserSocialNetworkUser", fields: ["userID", "id"], queryField:"userSocialNetworkByUserID") {\n  id: ID!\n  socialNetworkUsername: String!\n  userID: ID!\n  supportedSocialNetwork: SupportedSocialNetwork! @connection\n}\n\ntype SupportedSocialNetwork @model {\n  id: ID!\n  name: String!\n  address: String!\n}\n\ntype Button @model @key(name: "ButtonUser", fields: ["userID", "id"], queryField: "buttonByUserID") {\n  id: ID!\n  name: String!\n  address: String!\n  image: String\n  userID: ID!\n}\n
Run Code Online (Sandbox Code Playgroud)\n

该架构不包括我的所有模型定义 - customStyles、defaultStyles 等,但它们是一对一的关系,工作得很好。我在一对多关系方面遇到问题,例如用户到用户社交网络和用户到按钮。

\n

我在 AWS Amplify Docs 上阅读了很多有关此内容的资源,浏览了示例,但仍然没有找到任何可以使用的内容,这些内容可以让我从 getUser 调用的连接中获取信息,也让我能够获取用户名。\n任何输入将不胜感激!

\n

Aro*_*sha 8

这是查询深度的问题。它是2默认的,需要增加它(根据4您的情况)。

您可以按照以下步骤解决此问题。在项目根目录的 cmd 中(通常在其中运行 amplify 命令)。

  1. 运行amplify codegen configure- 这将再次提示配置。
  2. 输入4此选项Enter maximum statement depth [increase from default if your schema is deeply nested]
  3. 运行amplify codegen- 这将根据新的深度创建您的查询和突变。

您可以通过检查来验证grapgql/queries.js

getUser早些时候,您可以在查询中看到以下片段grapgql/queries.js

buttons {
  nextToken
}
Run Code Online (Sandbox Code Playgroud)

但按照上述解决步骤后,应该如下所示。

buttons {
    items {
        id
        image
        address
      }
  }
Run Code Online (Sandbox Code Playgroud)

最后再次查询您的用户。