【发布时间】:2019-05-29 05:07:37
【问题描述】:
我将 AWS AppSync 用于我的一个应用程序中的聊天应用程序。我们能够成功地进行设置和基本查询。
在一种情况下,我需要编写一个自定义的 GraphQL 查询,以便我可以使用来自另一种类型的引用来获取其他数据。例如,我可以有来自用户的allMessageGroup 和来自特定组的allMessages。
现在我想添加组中的最后一条消息及其发件人以及所有消息组的列表,就像什么是应用主页一样。
但我无法理解如何进行 JOIN 或编写这样的查询,这些查询会根据对话/消息/用户类型/表给出混合结果。
平台:iOS 语言:斯威夫特
以下是我正在使用的架构和 API/查询的详细信息
架构
type Conversation {
conversation_cover_pic: String
conversation_type: String!
createdAt: String
id: ID!
messages(after: String, first: Int): MessageConnection
name: String!
privacy: String
}
type Message {
author: User
content: String!
conversationId: ID!
createdAt: String
id: ID!
recipient: User
sender: String
}
type MessageConnection {
messages: [Message]
nextToken: String
}
查询
query getUserConversationConnectionThroughUser($after: String, $first: Int)
{
me
{
id
__typename
conversations(first: $first, after: $after)
{
__typename
nextToken
userConversations
{
__typename
userId
conversationId
associated
{
__typename
userId
}
conversation
{
__typename
id
name
privacy
messages
{
__typename
id
conversationId
content
createdAt
sender
isSent
}
}
}
}
}
}
【问题讨论】:
-
我想帮忙,但这几乎是难以理解的。您是说要从查询中返回的不仅仅是
me?联接不是由 GraphQL 处理的,这可以由解析器处理。 -
我想得到比我更多的结果,它可以基于条件,例如获取所有聊天组的列表,还可以在组中添加最后一条消息,其中包含组详细信息,可在对话/组所有下使用消息列表
-
你能展示你的解析器吗? Graphql 只是一种定义边界和类型的方法。它没有说明如何查询或存储数据。
-
你明白了吗?我面临同样的问题,我可以在 iOS 查询中检索对象
me,然后检索所有 userConversations,但我无法通过 userConversations 查找所有实际对话。
标签: swift graphql aws-appsync aws-appsync-ios