Maybe there should be a recipe on how to do polling with redwoodjs because of prisma2 don’t support subscription?
Thanks for your question @guledali! Could you explain your use case?
Polling from the frontend to your app is supported via Apollo client. useQuery
is just a passthrough to the Apollo React hooks!
You can see available parameters here: https://www.apollographql.com/docs/react/api/react-hooks/
Specifically, you’d pass a non-zero pollInterval
.
That would poll your GraphQL API (and pass through polling queries to the Prisma client).
I agree with @guledali in that I would very much like to see a polling example
If it’s a matter of showing us how to you redwood/web’s useQuery that’s fine too – the only mention of the useQuery in the docs says: ‘you can use useQuery, but you should use a Cell’ which is instructional but not helpful
I don’t have enough apollo to understand how to useQuery instead of a Cell and I can’t find a demo
I very much need to know how/where to pass: pollInterval – I’m so close to demo done and I still would like to demo a login…
I wish I could pass it as a prop on the Cell - but that doesn’t work…
my use case is having to re-execute a cell on a timer – I’m getting close to replacing it on the page using an interval – so hacky…
I can’t find useQuery in the docs, cookbooks, or tutorials…
Searching…
This is what I used sometime ago to poll for new notifications – ie, the “bell” icon.
export const beforeQuery = () => {
return {
pollInterval: 1000 * 60 * 5,
}
}
export const QUERY = gql`
query NotificationIndicatorQuery {
recentNotificationCount
}
`
The beforeQuery
adds these to the useQuery
as defined by QUERY.
For more info:
beforeQuery
is a lifecycle hook.
Polling provides near-real-time synchronization with your server by causing a query to execute periodically at a specified interval
export const beforeQuery = () => {
return {
pollInterval: 1000 * 60 * 5,
}
}
That’s the stuff !!
So the results of beforeQuery are passed as parameters to the Apollo useQuery – I found useQuery in the withCellHOC.tsx
file so I knew there was a way – Redwood is slick!
Back when Aurelia hit the ground running it had this slick feel (in a lot of ways it still does) but now that Redwood is my new Fave (I’m so fickle:-) I want more !!!
@dthyresson you are keeping me alive in this forced march to Monday’s demo - I can’t thank you enough !! Please pass me the link to the docs so that I can contribute to them as I learn << found this.
Edit: the query doesn’t re-execute…
export const beforeQuery = (props) => {
return { variables:props, fetchPolicy: 'network-only', pollInterval: 1000 * 1.5 }
}
I am expecting the Cell to be rendered again and again…
React isn’t doing that, because nothing has changed…?
Glad to help.
Thanks! Much appreciated!
You can always check your api service to see that it is being called - it should invoke graphql
every second.
FYI -
network-only
→ Apollo Client executes the full query against your GraphQL server, without first checking the cache. The query’s result is stored in the cache.
Look at Queries - Client (React) - Apollo GraphQL Docs
Maybe you want no-cache
Similar to
network-only
, except the query’s result is not stored in the cache.
Hrmmm – my service is not being called repeatedly… nor is my AWS endpoint…
Odd, I noticed that my UI didn’t refresh when I saved changes to the Cell – so I reloaded manually
And now it works…
(I could’ve sworn the UI was reloading as I changed Cell files… Ah, worry about that later…)
Submitted a PR for Docs
add example of beforeQuery export for polling
Thanks!
Can find it here: add example of beforeQuery export for polling by ajoslin103 · Pull Request #641 · redwoodjs/redwoodjs.com · GitHub
@ajoslin103’s beforeQuery approach works great! Inlining his docs contribution here in case that’s helpful to any readers of this thread:
export const beforeQuery = (props) => {
return {
variables: props,
fetchPolicy: 'no-cache',
pollInterval: 1000,
}
}
This goes into your cell file.