AWS AppSync GraphQl

发布于 2025-01-31 17:17:04 字数 7408 浏览 3 评论 0原文

随着AppSync GraphQL变压器的最新更改,我一直在尝试相应地迁移我的代码,但似乎每次都失败了。

我在YouTube上关注一个直接的教程,该教程说明了如何构建实时聊天应用程序。 视频中的那个家伙使用AppSync API与GraphQl一起开发了他的后端,但正在使用V1变压器进行。

我试图阅读文档并确实更改了我的代码,但是它似乎并没有按照我想要的方式工作。

他的代码

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"])
}

我的代码

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

“他的查询结果看起来像this”

这些是我的查询结果

​自动生成的Queries.js文件

/* 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
    }
  }
`;

这是他的自动生成的查询。JS文件,

/* 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
    }
  }
`;

如果有人可以尝试查看代码并告诉我是否有任何代码片段,我会喜欢的,因为在我在控制台上运行查询后,它不会给我提供给他的结果。

感谢任何人都能提供的任何帮助, 马蒂

With the recent changes to the Appsync Graphql transformer, I've been trying to migrate my code accordingly but seem to fail every time.

I'm following a straightforward tutorial on youtube that explains how to build a real-time chatting app.
The guy in the video develops his backend using the Appsync API with Graphql but is doing it with a V1 transformer.

I've tried to read the documentation and did change my code, but it doesn't seem to work the way I want it to.

HIS CODE

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"])
}

MY CODE

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
}

These are his Query results with Aws

His Query results look like this

These are my Query results

My Query results

This is my auto-generated queries.js file

/* 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
    }
  }
`;

This is his auto-generated queries.js files

/* 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
    }
  }
`;

I would love it if someone could try and look at the code and tell me if there are any wrong pieces of code because after I run queries on the console, it doesn't give me the same results it provides to him.

I appreciate any help anyone can provide,
Matti

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魔法少女 2025-02-07 17:17:04

由于您没有使用primarykey您使用的是userId和chatroomId )作为hasmany关系。您需要在中添加indexname用户 chatroom 模型的@hasmany指令。

@belongsto@hasmany indexname对于该关系应该相同。

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")
}

有关更多信息,请查看

Since you are not using primaryKey(which you are using userID and chatRoomID) for hasMany relation. You need to add indexName in User and ChatRoom model's @hasMany directive.

@belongsTo and @hasMany indexName should be same for the that relation.

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")
}

For more information, please check out the Amplify GraphQL docs

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文