AWS AppSync GraphQl
随着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
这些是我的查询结果
自动生成的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
These are 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于您没有使用
primarykey
(您使用的是userId和chatroomId )作为hasmany
关系。您需要在中添加
chatroom 模型的indexname
用户@hasmany
指令。@belongsto
和@hasmany
indexname对于该关系应该相同。有关更多信息,请查看
Since you are not using
primaryKey
(which you are using userID and chatRoomID) forhasMany
relation. You need to addindexName
inUser
andChatRoom
model's@hasMany
directive.@belongsTo
and@hasMany
indexName should be same for the that relation.For more information, please check out the Amplify GraphQL docs