Stack Overflow Asked by U Rogel on November 20, 2021
I am writing a graphql subscriptions server. If I write a query it is no problem to have resolvers nested one within the other, so the query would look something like this:
query {
messages {
privateMessage {
id
message
userId
}
}
}
So first the messages
resolver is executed, then the privateMessage
resolver is executed.
I would like to know if the same structure is achievable for subscriptions so it would look like this:
subscription {
messages {
privateMessage {
id
message
userId
}
}
}
EDIT:
This is the current root subscription schema I have:
const RootSubscriptions = new GraphQLObjectType({
name: 'RootSubscriptions',
fields: {
privateMessage: {
type: PrivateMessage.type,
resolve: PrivateMessage.resolve,
subscribe: PrivateMessage.subscribe,
},
flaggedMessage: {
type: FlaggedMessage.type,
resolve: FlaggedMessage.resolve,
subscribe: FlaggedMessage.subscribe,
},
teamMessage: {
type: TeamMessage.type,
resolve: TeamMessage.resolve,
subscribe: TeamMessage.subscribe,
},
},
})
I would like it to look like this:
const RootSubscriptions = new GraphQLObjectType({
name: 'RootSubscriptions',
fields: {
messages: {
type: new GraphQLObjectType({
name: 'MessagesSubType',
fields: {
privateMessage: {
type: PrivateMessage.type,
resolve: PrivateMessage.resolve,
subscribe: PrivateMessage.subscribe,
},
flaggedMessage: {
type: FlaggedMessage.type,
resolve: FlaggedMessage.resolve,
subscribe: FlaggedMessage.subscribe,
},
teamMessage: {
type: TeamMessage.type,
resolve: TeamMessage.resolve,
subscribe: TeamMessage.subscribe,
},
}
})
}
},
})
EDIT END
Problem is that I get the messages
subscribe function to run but not the privateMessage
subscribe function to run. Would love to know if it is possible and how to achieve it.
Since I’m writing it with node.js, I would appreciate an example in js, but any pointer to a solution would be helpful.
Thanks in advance!
Based on my understanding of how graphQl subscriptions work, you may have little luck with nested subscriptions. I've not found supporting documentation to support this, but in my own experimentations, I've not found this to work. In this case, I would advice that you have a messages root subscription that expects parameters of the type of sucription, in this case an enum of either private, flagged or team message. You can use switch case to determine the subscription and react accordingly.
Answered by Kisinga on November 20, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP