最近对Appsync Graphql转换器进行了更改,我一直试图相应地迁移代码,但每次都会失败。
我在youtube上学习一个简单的教程,解释如何构建一个实时聊天应用程序。视频中的家伙使用Appsync和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
}
}
`;这是他自动生成的queries.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
}
}
`;如果有人能试着看代码,告诉我是否有错误的代码,我会很高兴的,因为在我在控制台上运行查询之后,它不会给我它提供给我的结果。
我很感激任何人能提供的帮助,马蒂
发布于 2022-05-28 09:25:40
因为您没有使用primaryKey(使用的是userID和chatRoomID)来处理hasMany关系。您需要在User和ChatRoom模型的@hasMany指令中添加@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")
}有关更多信息,请查看放大GraphQL文档
https://stackoverflow.com/questions/72352963
复制相似问题