How to write JOIN in graphQL or get result from multiple types - AWS App sync iOS












0















I am using AWS AppSync for a chat app in one of the my applications. We are able to do setup and basic query successfully.



In one of the case I need to write a customized GraphQL query so that I can have additional data using reference of one type from another. For example, I can have allMessageGroup from a user and also allMessages from a particular group.



Now I want to add the last message in the group and its sender with the list of all message group just like what's app home page.



But I am not able to understand how make JOIN or write such query which give mixed results based on Conversation/Message/User types/table.



Platform:iOS
Language: Swift



For detail below is my Schema and API/Query I am using



Schema



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



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









share|improve this question

























  • I want to help but this is pretty close to unintelligible. Are you saying you want to return more than just me from your query? JOINS are not handled by GraphQL this can be handled by the resolvers.

    – Moosecouture
    Jan 2 at 20:18













  • I want to get result more than me, it can be based on conditional for example get the list of all chat groups also add last message in the group with group details which is available under conversation/group all message list

    – Tarun Seera
    Jan 3 at 13:57











  • Can you show your resolvers? Graphql is just a way of defining boundaries and types. It does not say how to query or store the data.

    – Moosecouture
    Jan 3 at 14:05











  • Have you figured this out? I am facing the same issue, I can retrieve the object me in the iOS query and then all of the userConversations, but I am unable to go through the userConversations to find all the actual conversations.

    – Munib
    Jan 7 at 23:14


















0















I am using AWS AppSync for a chat app in one of the my applications. We are able to do setup and basic query successfully.



In one of the case I need to write a customized GraphQL query so that I can have additional data using reference of one type from another. For example, I can have allMessageGroup from a user and also allMessages from a particular group.



Now I want to add the last message in the group and its sender with the list of all message group just like what's app home page.



But I am not able to understand how make JOIN or write such query which give mixed results based on Conversation/Message/User types/table.



Platform:iOS
Language: Swift



For detail below is my Schema and API/Query I am using



Schema



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



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









share|improve this question

























  • I want to help but this is pretty close to unintelligible. Are you saying you want to return more than just me from your query? JOINS are not handled by GraphQL this can be handled by the resolvers.

    – Moosecouture
    Jan 2 at 20:18













  • I want to get result more than me, it can be based on conditional for example get the list of all chat groups also add last message in the group with group details which is available under conversation/group all message list

    – Tarun Seera
    Jan 3 at 13:57











  • Can you show your resolvers? Graphql is just a way of defining boundaries and types. It does not say how to query or store the data.

    – Moosecouture
    Jan 3 at 14:05











  • Have you figured this out? I am facing the same issue, I can retrieve the object me in the iOS query and then all of the userConversations, but I am unable to go through the userConversations to find all the actual conversations.

    – Munib
    Jan 7 at 23:14
















0












0








0


1






I am using AWS AppSync for a chat app in one of the my applications. We are able to do setup and basic query successfully.



In one of the case I need to write a customized GraphQL query so that I can have additional data using reference of one type from another. For example, I can have allMessageGroup from a user and also allMessages from a particular group.



Now I want to add the last message in the group and its sender with the list of all message group just like what's app home page.



But I am not able to understand how make JOIN or write such query which give mixed results based on Conversation/Message/User types/table.



Platform:iOS
Language: Swift



For detail below is my Schema and API/Query I am using



Schema



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



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









share|improve this question
















I am using AWS AppSync for a chat app in one of the my applications. We are able to do setup and basic query successfully.



In one of the case I need to write a customized GraphQL query so that I can have additional data using reference of one type from another. For example, I can have allMessageGroup from a user and also allMessages from a particular group.



Now I want to add the last message in the group and its sender with the list of all message group just like what's app home page.



But I am not able to understand how make JOIN or write such query which give mixed results based on Conversation/Message/User types/table.



Platform:iOS
Language: Swift



For detail below is my Schema and API/Query I am using



Schema



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



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






swift graphql aws-appsync aws-appsync-ios






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 3 at 11:34









David Maze

15.2k31429




15.2k31429










asked Jan 2 at 14:38









Tarun SeeraTarun Seera

1,94831432




1,94831432













  • I want to help but this is pretty close to unintelligible. Are you saying you want to return more than just me from your query? JOINS are not handled by GraphQL this can be handled by the resolvers.

    – Moosecouture
    Jan 2 at 20:18













  • I want to get result more than me, it can be based on conditional for example get the list of all chat groups also add last message in the group with group details which is available under conversation/group all message list

    – Tarun Seera
    Jan 3 at 13:57











  • Can you show your resolvers? Graphql is just a way of defining boundaries and types. It does not say how to query or store the data.

    – Moosecouture
    Jan 3 at 14:05











  • Have you figured this out? I am facing the same issue, I can retrieve the object me in the iOS query and then all of the userConversations, but I am unable to go through the userConversations to find all the actual conversations.

    – Munib
    Jan 7 at 23:14





















  • I want to help but this is pretty close to unintelligible. Are you saying you want to return more than just me from your query? JOINS are not handled by GraphQL this can be handled by the resolvers.

    – Moosecouture
    Jan 2 at 20:18













  • I want to get result more than me, it can be based on conditional for example get the list of all chat groups also add last message in the group with group details which is available under conversation/group all message list

    – Tarun Seera
    Jan 3 at 13:57











  • Can you show your resolvers? Graphql is just a way of defining boundaries and types. It does not say how to query or store the data.

    – Moosecouture
    Jan 3 at 14:05











  • Have you figured this out? I am facing the same issue, I can retrieve the object me in the iOS query and then all of the userConversations, but I am unable to go through the userConversations to find all the actual conversations.

    – Munib
    Jan 7 at 23:14



















I want to help but this is pretty close to unintelligible. Are you saying you want to return more than just me from your query? JOINS are not handled by GraphQL this can be handled by the resolvers.

– Moosecouture
Jan 2 at 20:18







I want to help but this is pretty close to unintelligible. Are you saying you want to return more than just me from your query? JOINS are not handled by GraphQL this can be handled by the resolvers.

– Moosecouture
Jan 2 at 20:18















I want to get result more than me, it can be based on conditional for example get the list of all chat groups also add last message in the group with group details which is available under conversation/group all message list

– Tarun Seera
Jan 3 at 13:57





I want to get result more than me, it can be based on conditional for example get the list of all chat groups also add last message in the group with group details which is available under conversation/group all message list

– Tarun Seera
Jan 3 at 13:57













Can you show your resolvers? Graphql is just a way of defining boundaries and types. It does not say how to query or store the data.

– Moosecouture
Jan 3 at 14:05





Can you show your resolvers? Graphql is just a way of defining boundaries and types. It does not say how to query or store the data.

– Moosecouture
Jan 3 at 14:05













Have you figured this out? I am facing the same issue, I can retrieve the object me in the iOS query and then all of the userConversations, but I am unable to go through the userConversations to find all the actual conversations.

– Munib
Jan 7 at 23:14







Have you figured this out? I am facing the same issue, I can retrieve the object me in the iOS query and then all of the userConversations, but I am unable to go through the userConversations to find all the actual conversations.

– Munib
Jan 7 at 23:14














1 Answer
1






active

oldest

votes


















0














It sounds like you need multiple requests to one or more datasources to fulfill this graphQL query. In this case, you can use AppSync's pipeline resolver feature.



With pipeline resolvers, you can create multiple functions, each of which can use the results of the previous function and query a database. These functions run in an order you specify.



An example of something you could do with a pipeline resolver:




  1. One function will query the chat group database

  2. A second function will use the results of the chat group to fetch messages

  3. Consolidate all the results into one graphQL response containing group information and messages


Here is the documentation for pipeline resolvers: https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html






share|improve this answer
























  • There is no need to use pipeline resolvers, this query is used as an example in the appsync chat application which doesn't use pipeline resolvers as well. Example

    – Munib
    Jan 7 at 23:12








  • 1





    The other way to query multiple datasources would be to setup nested resolvers. This is the method used by the chat application.

    – Michael Willingham
    Jan 9 at 0:04











  • Thanks for the reply. That makes sense, if I were to replicate the same query from the chat application in swift, how could that be done? This is the issue I am facing, here.

    – Munib
    Jan 9 at 6:52






  • 1





    You add 1) a resolver on the query itself, 2) a resolver on sub-fields of the query's return type. In your example, there is a resolver on the "me" query. "me" query returns a "User" type, and there are multiple resolvers on fields of the "User" type. Therefore, when you run the "me" query, the "me" resolver will run first, and then the "User.conversations" resolver will run second, with input from the "me" resolver. Here are the resolvers used in that example: Resolvers

    – Michael Willingham
    Jan 9 at 22:24











  • I completely understand, but when I generate the code using amplify for swift, it somehow doesn't generate the fields for associated: [UserConversations]. So even though my resolvers are setup exactly like the chat application, on the type UserConversations there isn't a subfield to be accessed in the first place. Here is the codegen for swift that I am referring to. As you can see there is no way to reach associated from Me throgh UserConversations.

    – Munib
    Jan 10 at 1:34











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54008245%2fhow-to-write-join-in-graphql-or-get-result-from-multiple-types-aws-app-sync-io%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









0














It sounds like you need multiple requests to one or more datasources to fulfill this graphQL query. In this case, you can use AppSync's pipeline resolver feature.



With pipeline resolvers, you can create multiple functions, each of which can use the results of the previous function and query a database. These functions run in an order you specify.



An example of something you could do with a pipeline resolver:




  1. One function will query the chat group database

  2. A second function will use the results of the chat group to fetch messages

  3. Consolidate all the results into one graphQL response containing group information and messages


Here is the documentation for pipeline resolvers: https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html






share|improve this answer
























  • There is no need to use pipeline resolvers, this query is used as an example in the appsync chat application which doesn't use pipeline resolvers as well. Example

    – Munib
    Jan 7 at 23:12








  • 1





    The other way to query multiple datasources would be to setup nested resolvers. This is the method used by the chat application.

    – Michael Willingham
    Jan 9 at 0:04











  • Thanks for the reply. That makes sense, if I were to replicate the same query from the chat application in swift, how could that be done? This is the issue I am facing, here.

    – Munib
    Jan 9 at 6:52






  • 1





    You add 1) a resolver on the query itself, 2) a resolver on sub-fields of the query's return type. In your example, there is a resolver on the "me" query. "me" query returns a "User" type, and there are multiple resolvers on fields of the "User" type. Therefore, when you run the "me" query, the "me" resolver will run first, and then the "User.conversations" resolver will run second, with input from the "me" resolver. Here are the resolvers used in that example: Resolvers

    – Michael Willingham
    Jan 9 at 22:24











  • I completely understand, but when I generate the code using amplify for swift, it somehow doesn't generate the fields for associated: [UserConversations]. So even though my resolvers are setup exactly like the chat application, on the type UserConversations there isn't a subfield to be accessed in the first place. Here is the codegen for swift that I am referring to. As you can see there is no way to reach associated from Me throgh UserConversations.

    – Munib
    Jan 10 at 1:34
















0














It sounds like you need multiple requests to one or more datasources to fulfill this graphQL query. In this case, you can use AppSync's pipeline resolver feature.



With pipeline resolvers, you can create multiple functions, each of which can use the results of the previous function and query a database. These functions run in an order you specify.



An example of something you could do with a pipeline resolver:




  1. One function will query the chat group database

  2. A second function will use the results of the chat group to fetch messages

  3. Consolidate all the results into one graphQL response containing group information and messages


Here is the documentation for pipeline resolvers: https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html






share|improve this answer
























  • There is no need to use pipeline resolvers, this query is used as an example in the appsync chat application which doesn't use pipeline resolvers as well. Example

    – Munib
    Jan 7 at 23:12








  • 1





    The other way to query multiple datasources would be to setup nested resolvers. This is the method used by the chat application.

    – Michael Willingham
    Jan 9 at 0:04











  • Thanks for the reply. That makes sense, if I were to replicate the same query from the chat application in swift, how could that be done? This is the issue I am facing, here.

    – Munib
    Jan 9 at 6:52






  • 1





    You add 1) a resolver on the query itself, 2) a resolver on sub-fields of the query's return type. In your example, there is a resolver on the "me" query. "me" query returns a "User" type, and there are multiple resolvers on fields of the "User" type. Therefore, when you run the "me" query, the "me" resolver will run first, and then the "User.conversations" resolver will run second, with input from the "me" resolver. Here are the resolvers used in that example: Resolvers

    – Michael Willingham
    Jan 9 at 22:24











  • I completely understand, but when I generate the code using amplify for swift, it somehow doesn't generate the fields for associated: [UserConversations]. So even though my resolvers are setup exactly like the chat application, on the type UserConversations there isn't a subfield to be accessed in the first place. Here is the codegen for swift that I am referring to. As you can see there is no way to reach associated from Me throgh UserConversations.

    – Munib
    Jan 10 at 1:34














0












0








0







It sounds like you need multiple requests to one or more datasources to fulfill this graphQL query. In this case, you can use AppSync's pipeline resolver feature.



With pipeline resolvers, you can create multiple functions, each of which can use the results of the previous function and query a database. These functions run in an order you specify.



An example of something you could do with a pipeline resolver:




  1. One function will query the chat group database

  2. A second function will use the results of the chat group to fetch messages

  3. Consolidate all the results into one graphQL response containing group information and messages


Here is the documentation for pipeline resolvers: https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html






share|improve this answer













It sounds like you need multiple requests to one or more datasources to fulfill this graphQL query. In this case, you can use AppSync's pipeline resolver feature.



With pipeline resolvers, you can create multiple functions, each of which can use the results of the previous function and query a database. These functions run in an order you specify.



An example of something you could do with a pipeline resolver:




  1. One function will query the chat group database

  2. A second function will use the results of the chat group to fetch messages

  3. Consolidate all the results into one graphQL response containing group information and messages


Here is the documentation for pipeline resolvers: https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html







share|improve this answer












share|improve this answer



share|improve this answer










answered Jan 3 at 22:19









Michael WillinghamMichael Willingham

56127




56127













  • There is no need to use pipeline resolvers, this query is used as an example in the appsync chat application which doesn't use pipeline resolvers as well. Example

    – Munib
    Jan 7 at 23:12








  • 1





    The other way to query multiple datasources would be to setup nested resolvers. This is the method used by the chat application.

    – Michael Willingham
    Jan 9 at 0:04











  • Thanks for the reply. That makes sense, if I were to replicate the same query from the chat application in swift, how could that be done? This is the issue I am facing, here.

    – Munib
    Jan 9 at 6:52






  • 1





    You add 1) a resolver on the query itself, 2) a resolver on sub-fields of the query's return type. In your example, there is a resolver on the "me" query. "me" query returns a "User" type, and there are multiple resolvers on fields of the "User" type. Therefore, when you run the "me" query, the "me" resolver will run first, and then the "User.conversations" resolver will run second, with input from the "me" resolver. Here are the resolvers used in that example: Resolvers

    – Michael Willingham
    Jan 9 at 22:24











  • I completely understand, but when I generate the code using amplify for swift, it somehow doesn't generate the fields for associated: [UserConversations]. So even though my resolvers are setup exactly like the chat application, on the type UserConversations there isn't a subfield to be accessed in the first place. Here is the codegen for swift that I am referring to. As you can see there is no way to reach associated from Me throgh UserConversations.

    – Munib
    Jan 10 at 1:34



















  • There is no need to use pipeline resolvers, this query is used as an example in the appsync chat application which doesn't use pipeline resolvers as well. Example

    – Munib
    Jan 7 at 23:12








  • 1





    The other way to query multiple datasources would be to setup nested resolvers. This is the method used by the chat application.

    – Michael Willingham
    Jan 9 at 0:04











  • Thanks for the reply. That makes sense, if I were to replicate the same query from the chat application in swift, how could that be done? This is the issue I am facing, here.

    – Munib
    Jan 9 at 6:52






  • 1





    You add 1) a resolver on the query itself, 2) a resolver on sub-fields of the query's return type. In your example, there is a resolver on the "me" query. "me" query returns a "User" type, and there are multiple resolvers on fields of the "User" type. Therefore, when you run the "me" query, the "me" resolver will run first, and then the "User.conversations" resolver will run second, with input from the "me" resolver. Here are the resolvers used in that example: Resolvers

    – Michael Willingham
    Jan 9 at 22:24











  • I completely understand, but when I generate the code using amplify for swift, it somehow doesn't generate the fields for associated: [UserConversations]. So even though my resolvers are setup exactly like the chat application, on the type UserConversations there isn't a subfield to be accessed in the first place. Here is the codegen for swift that I am referring to. As you can see there is no way to reach associated from Me throgh UserConversations.

    – Munib
    Jan 10 at 1:34

















There is no need to use pipeline resolvers, this query is used as an example in the appsync chat application which doesn't use pipeline resolvers as well. Example

– Munib
Jan 7 at 23:12







There is no need to use pipeline resolvers, this query is used as an example in the appsync chat application which doesn't use pipeline resolvers as well. Example

– Munib
Jan 7 at 23:12






1




1





The other way to query multiple datasources would be to setup nested resolvers. This is the method used by the chat application.

– Michael Willingham
Jan 9 at 0:04





The other way to query multiple datasources would be to setup nested resolvers. This is the method used by the chat application.

– Michael Willingham
Jan 9 at 0:04













Thanks for the reply. That makes sense, if I were to replicate the same query from the chat application in swift, how could that be done? This is the issue I am facing, here.

– Munib
Jan 9 at 6:52





Thanks for the reply. That makes sense, if I were to replicate the same query from the chat application in swift, how could that be done? This is the issue I am facing, here.

– Munib
Jan 9 at 6:52




1




1





You add 1) a resolver on the query itself, 2) a resolver on sub-fields of the query's return type. In your example, there is a resolver on the "me" query. "me" query returns a "User" type, and there are multiple resolvers on fields of the "User" type. Therefore, when you run the "me" query, the "me" resolver will run first, and then the "User.conversations" resolver will run second, with input from the "me" resolver. Here are the resolvers used in that example: Resolvers

– Michael Willingham
Jan 9 at 22:24





You add 1) a resolver on the query itself, 2) a resolver on sub-fields of the query's return type. In your example, there is a resolver on the "me" query. "me" query returns a "User" type, and there are multiple resolvers on fields of the "User" type. Therefore, when you run the "me" query, the "me" resolver will run first, and then the "User.conversations" resolver will run second, with input from the "me" resolver. Here are the resolvers used in that example: Resolvers

– Michael Willingham
Jan 9 at 22:24













I completely understand, but when I generate the code using amplify for swift, it somehow doesn't generate the fields for associated: [UserConversations]. So even though my resolvers are setup exactly like the chat application, on the type UserConversations there isn't a subfield to be accessed in the first place. Here is the codegen for swift that I am referring to. As you can see there is no way to reach associated from Me throgh UserConversations.

– Munib
Jan 10 at 1:34





I completely understand, but when I generate the code using amplify for swift, it somehow doesn't generate the fields for associated: [UserConversations]. So even though my resolvers are setup exactly like the chat application, on the type UserConversations there isn't a subfield to be accessed in the first place. Here is the codegen for swift that I am referring to. As you can see there is no way to reach associated from Me throgh UserConversations.

– Munib
Jan 10 at 1:34




















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54008245%2fhow-to-write-join-in-graphql-or-get-result-from-multiple-types-aws-app-sync-io%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Monofisismo

Angular Downloading a file using contenturl with Basic Authentication

Olmecas