Comments (2)
offsetLimitPagination
only defines a merge
function for you - this information is unfortunately a bit hidden in our docs in this paragraph.
I believe you need to define your own read
function to get the behaviour you are expecting here.
from apollo-client.
Thank you.
I believe you need to define your own read function to get the behaviour you are expecting here.
I did such a thing, wrote read and merge functions instead of using the offsetLimitPagination helper. It didn't fix anything. Moreover, Apollo didn't call my read function during the second request (I put console.log there) which looks totally confusing for me.
My code is:
nodes: {
keyArgs: false,
read(existing, args) {
const offset = args?.args?.offset ?? 0;
const limit = args?.args?.limit ?? 100;
console.log(
"############### [I am read] ###############",
);
return (
existing && existing.slice(offset, offset + limit)
);
},
merge(existing = [], incoming, args) {
console.log(
"############### [I am merge] ###############",
);
const offset = args?.args?.offset ?? 0;
const merged = existing ? existing.slice(0) : [];
for (let i = 0; i < incoming.length; ++i) {
merged[offset + i] = incoming[i];
}
return merged;
},
},
The log is:
>>>>>> REQUEST [0..20]
############### [I am merge] ###############
############### [I am read] ###############
<<<<<< QUERY RESPONSE
>>>>>> REQUEST [0..20] again
<<<<<< QUERY RESPONSE [0..20] again
>>>>>> REQUEST [5..15]
############### [I am read]
############### [I am merge] ###############
<<<<<< RESPONSE [5..15]
Please look at lines:
>>>>>> REQUEST [0..20] again
<<<<<< QUERY RESPONSE [0..20] again
There is no read function call between them. And I see a network request in the third case.
from apollo-client.
Related Issues (20)
- [Data masking] Add option to enable data masking globally
- [Data masking] Add `@unmasked` directive that makes all data available in the query
- [Data masking] Warn when accessing masked fields with `@unmasked` queries
- [Data masking] Allow parent object in query to be passed to `from` option in `useFragment`
- [Data masking] Provide codemod to add `@unmased` directives to all queries
- [Data masking] Create ESLint plugin/rule that detects usage of `@unmasked` directives
- [Data masking] Allow `useFragment` to work with `no-cache` queries
- [Data masking] Suspend `useFragment` when a deferred fragment is pending
- [Data masking] Conditionally suspend `useFragment` depending on source of query
- [Data masking] Conditionally suspend `useFragment` depending on `fetchPolicy` and cache availability
- default errorPolicy : "all" HOT 4
- [Data masking] Create data masking guide in documentation
- [Data masking] Provide guide on migrating from data masking in GraphQL Codegen
- [Data masking] Create guide on integrating data masking with GraphQL Codegen
- `useQuery` API documentation anchor links are all `#undefined` HOT 3
- `useFragment`, returns false data. HOT 6
- useFragment accepts a generic type, but it converts it into a DeepPartialObject. what is the best usage in here to avoid using DeepPartialObject? HOT 4
- Pagination using useSuspenseQuery gets empty array instead of cached array when api response with empty array HOT 4
- Merging array in DeepMerger HOT 3
- RFC: Schema-driven testing HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apollo-client.