首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Appsync图形AWS

AWS Appsync图形AWS
EN

Stack Overflow用户
提问于 2022-05-23 18:00:20
回答 1查看 148关注 0票数 0

最近对Appsync Graphql转换器进行了更改,我一直试图相应地迁移代码,但每次都会失败。

我在youtube上学习一个简单的教程,解释如何构建一个实时聊天应用程序。视频中的家伙使用Appsync和Graphql一起开发他的后端,但是正在用V1转换器进行开发。

我试着阅读文档并确实修改了我的代码,但它似乎并没有按照我所希望的方式工作。

的代码

代码语言:javascript
复制
type User @model {
  id: ID!
  name: String!
  imageUri: String
  status: String
  chatRoomUser: [ChatRoomUser] @connection(keyName: "byUser", fields: ["id"])
}

type ChatRoomUser
@model
@key(name: "byUser", fields: ["userID", "chatRoomID"])
@key(name: "byChatRoom", fields: ["chatRoomID", "userID"]) {
  id: ID!
  userID: ID!
  chatRoomID: ID!
  user: User @connection(fields: ["userID"])
  chatRoom: ChatRoom @connection(fields: ["chatRoomID"])
}

type ChatRoom @model {
  id: ID!
  chatRoomUsers: [ChatRoomUser] @connection(keyName: "byChatRoom", fields: ["id"])
}

我的代码

代码语言:javascript
复制
type User @model {
  id: ID!
  name: String!
  imageUri: String
  status: String
  chatRoomUser: [ChatRoomUser] @hasMany
}

type ChatRoomUser @model {
  id: ID! @primaryKey
  userID: ID! @index(name: "byUser", sortKeyFields: ["chatRoomID"])
  chatRoomID: ID! @index(name: "byChatRoom", sortKeyFields: ["userID"])
  user: User @belongsTo(fields: ["userID"])
  chatRoom: ChatRoom @belongsTo(fields: ["chatRoomID"]
}

type ChatRoom @model {
  id: ID!
  chatRoomUsers: [ChatRoomUser] @hasMany
}

这些是他用Aws查询的结果。

这些是我的查询结果

这是我自动生成的queries.js文件。

代码语言:javascript
复制
/* eslint-disable */
// this is an auto generated file. This will be overwritten

export const getUser = /* GraphQL */ `
  query GetUser($id: ID!) {
    getUser(id: $id) {
      id
      name
      imageUri
      status
      chatRoomUser {
        items {
          id
          userID
          chatRoomID
          createdAt
          updatedAt
          userChatRoomUserId
          chatRoomChatRoomUsersId
        }
        nextToken
      }
      createdAt
      updatedAt
    }
  }
`;
export const listUsers = /* GraphQL */ `
  query ListUsers(
    $filter: ModelUserFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {
      items {
        id
        name
        imageUri
        status
        chatRoomUser {
          nextToken
        }
        createdAt
        updatedAt
      }
      nextToken
    }
  }
`;
export const getChatRoomUser = /* GraphQL */ `
  query GetChatRoomUser($id: ID!) {
    getChatRoomUser(id: $id) {
      id
      userID
      chatRoomID
      user {
        id
        name
        imageUri
        status
        chatRoomUser {
          nextToken
        }
        createdAt
        updatedAt
      }
      chatRoom {
        id
        chatRoomUsers {
          nextToken
        }
        createdAt
        updatedAt
      }
      createdAt
      updatedAt
      userChatRoomUserId
      chatRoomChatRoomUsersId
    }
  }
`;
export const listChatRoomUsers = /* GraphQL */ `
  query ListChatRoomUsers(
    $id: ID
    $filter: ModelChatRoomUserFilterInput
    $limit: Int
    $nextToken: String
    $sortDirection: ModelSortDirection
  ) {
    listChatRoomUsers(
      id: $id
      filter: $filter
      limit: $limit
      nextToken: $nextToken
      sortDirection: $sortDirection
    ) {
      items {
        id
        userID
        chatRoomID
        user {
          id
          name
          imageUri
          status
          createdAt
          updatedAt
        }
        chatRoom {
          id
          createdAt
          updatedAt
        }
        createdAt
        updatedAt
        userChatRoomUserId
        chatRoomChatRoomUsersId
      }
      nextToken
    }
  }
`;
export const getChatRoom = /* GraphQL */ `
  query GetChatRoom($id: ID!) {
    getChatRoom(id: $id) {
      id
      chatRoomUsers {
        items {
          id
          userID
          chatRoomID
          createdAt
          updatedAt
          userChatRoomUserId
          chatRoomChatRoomUsersId
        }
        nextToken
      }
      createdAt
      updatedAt
    }
  }
`;
export const listChatRooms = /* GraphQL */ `
  query ListChatRooms(
    $filter: ModelChatRoomFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listChatRooms(filter: $filter, limit: $limit, nextToken: $nextToken) {
      items {
        id
        chatRoomUsers {
          nextToken
        }
        createdAt
        updatedAt
      }
      nextToken
    }
  }
`;

这是他自动生成的queries.js文件。

代码语言:javascript
复制
/* tslint:disable */
/* eslint-disable */
// this is an auto generated file. This will be overwritten

export const getUser = /* GraphQL */ `
  query GetUser($id: ID!) {
    getUser(id: $id) {
      id
      name
      imageUri
      status
      chatRoomUser {
        items {
          id
          userID
          chatRoomID
          createdAt
          updatedAt
        }
        nextToken
      }
      createdAt
      updatedAt
    }
  }
`;
export const listUsers = /* GraphQL */ `
  query ListUsers(
    $filter: ModelUserFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {
      items {
        id
        name
        imageUri
        status
        chatRoomUser {
          nextToken
        }
        createdAt
        updatedAt
      }
      nextToken
    }
  }
`;
export const getChatRoomUser = /* GraphQL */ `
  query GetChatRoomUser($id: ID!) {
    getChatRoomUser(id: $id) {
      id
      userID
      chatRoomID
      user {
        id
        name
        imageUri
        status
        chatRoomUser {
          nextToken
        }
        createdAt
        updatedAt
      }
      chatRoom {
        id
        chatRoomUsers {
          nextToken
        }
        createdAt
        updatedAt
      }
      createdAt
      updatedAt
    }
  }
`;
export const listChatRoomUsers = /* GraphQL */ `
  query ListChatRoomUsers(
    $filter: ModelChatRoomUserFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listChatRoomUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {
      items {
        id
        userID
        chatRoomID
        user {
          id
          name
          imageUri
          status
          createdAt
          updatedAt
        }
        chatRoom {
          id
          createdAt
          updatedAt
        }
        createdAt
        updatedAt
      }
      nextToken
    }
  }
`;
export const getChatRoom = /* GraphQL */ `
  query GetChatRoom($id: ID!) {
    getChatRoom(id: $id) {
      id
      chatRoomUsers {
        items {
          id
          userID
          chatRoomID
          createdAt
          updatedAt
        }
        nextToken
      }
      createdAt
      updatedAt
    }
  }
`;
export const listChatRooms = /* GraphQL */ `
  query ListChatRooms(
    $filter: ModelChatRoomFilterInput
    $limit: Int
    $nextToken: String
  ) {
    listChatRooms(filter: $filter, limit: $limit, nextToken: $nextToken) {
      items {
        id
        chatRoomUsers {
          nextToken
        }
        createdAt
        updatedAt
      }
      nextToken
    }
  }
`;

如果有人能试着看代码,告诉我是否有错误的代码,我会很高兴的,因为在我在控制台上运行查询之后,它不会给我它提供给我的结果。

我很感激任何人能提供的帮助,马蒂

EN

回答 1

Stack Overflow用户

发布于 2022-05-28 09:25:40

因为您没有使用primaryKey(使用的是userID和chatRoomID)来处理hasMany关系。您需要在UserChatRoom模型的@hasMany指令中添加@hasMany

对于这种关系,@belongsTo@hasMany indexName应该是相同的。

代码语言:javascript
复制
type User @model {
  id: ID!
  name: String!
  imageUri: String
  status: String
  chatRoomUser: [ChatRoomUser] @hasMany (indexName: "byUser")
}

type ChatRoomUser @model {
  id: ID! @primaryKey
  userID: ID! @index(name: "byUser", sortKeyFields: ["chatRoomID"])
  chatRoomID: ID! @index(name: "byChatRoom", sortKeyFields: ["userID"])
  user: User @belongsTo(fields: ["userID"])
  chatRoom: ChatRoom @belongsTo(fields: ["chatRoomID"]) 
}

type ChatRoom @model {
  id: ID!
  chatRoomUsers: [ChatRoomUser] @hasMany (indexName: "byChatRoom")
}

有关更多信息,请查看放大GraphQL文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72352963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档