PayloadResponseStrategy
Response strategy for the Payload CMS driver
Parses Payload’s paginated collection responses — the
mongoose-paginate-v2 envelope, shared by many Express/Mongoose
backends:
{ "docs": [{ "id": "abc123", "title": "Hello" }], "totalDocs": 48, "limit": 10, "totalPages": 5, "page": 2, "pagingCounter": 11, "hasPrevPage": true, "hasNextPage": true, "prevPage": 1, "nextPage": 3}Default key paths are configured in PayloadResponseOptions. The
envelope’s pagingCounter is the 1-indexed offset of the first doc
on the page, so it maps straight onto from; to is computed from
page × limit (clamped to the total). prevPage / nextPage are
page numbers, not URLs, so the navigation-URL slots on
PaginatedCollection stay undefined unless the consumer overrides
their paths via PaginationConfig. The traversal algorithm is
inherited from AbstractDotPathResponseStrategy; this class exists
so DriverEnum.PAYLOAD resolves to a distinct identity at the DI
layer even though the parsing logic is shared with JSON:API, NestJS,
Strapi, and PocketBase.
Constructor
Section titled “Constructor”new PayloadResponseStrategy()Methods
Section titled “Methods”paginate()
Section titled “paginate()”paginate(response: RawResponse, options: ResponseOptions): PaginatedCollection<T>Parse a nested-envelope pagination response into a PaginatedCollection
| Parameter | Type | Description |
|---|---|---|
response |
RawResponse |
The raw API response object |
options |
ResponseOptions |
The response key name configuration (dot-notation paths supported) |
Returns — A typed PaginatedCollection instance
resolve()
Section titled “resolve()”resolve(response: RawResponse, path: string): unknownResolve a value from a response object using a dot-notation path
Supports both flat keys ('data') and nested paths ('meta.totalItems').
| Parameter | Type | Description |
|---|---|---|
response |
RawResponse |
The raw response object |
path |
string |
The dot-notation path to resolve |
Returns — The resolved value, or undefined if any segment is missing
resolveFrom()
Section titled “resolveFrom()”resolveFrom(response: RawResponse, options: ResponseOptions, currentPage: number, perPage?: number): number | undefinedResolve the “from” index value
If options.from resolves to a value in the response, use it.
Otherwise compute (currentPage - 1) * perPage + 1 when both are known.
| Parameter | Type | Description |
|---|---|---|
response |
RawResponse |
The raw response object |
options |
ResponseOptions |
The response key name configuration |
currentPage |
number |
The current page number |
perPage |
number |
The number of items per page |
Returns — The “from” index, or undefined when neither path nor inputs suffice
resolveTo()
Section titled “resolveTo()”resolveTo(response: RawResponse, options: ResponseOptions, currentPage: number, perPage?: number, total?: number): number | undefinedResolve the “to” index value
If options.to resolves to a value in the response, use it.
Otherwise compute Math.min(currentPage * perPage, total) when all
three are known.
| Parameter | Type | Description |
|---|---|---|
response |
RawResponse |
The raw response object |
options |
ResponseOptions |
The response key name configuration |
currentPage |
number |
The current page number |
perPage |
number |
The number of items per page |
total |
number |
The total number of items |
Returns — The “to” index, or undefined when neither path nor inputs suffice
