Class

CouchDBPaginator

CouchDBPaginator(adapter, query, size, clazz)

Constructor

# new CouchDBPaginator(adapter, query, size, clazz)

Implements pagination for CouchDB queries using bookmarks for efficient navigation through result sets

Paginator for CouchDB query results

Parameters:
Name Type Description
adapter CouchDBAdapter.<any, any, any>

The CouchDB adapter

query MangoQuery

The Mango query to paginate

size number

The page size

clazz Constructor.<M>

The model constructor

View Source query/Paginator.ts, line 5

Example
// Example of using CouchDBPaginator
const adapter = new MyCouchDBAdapter(scope);
const query = { selector: { type: "user" } };
const paginator = new CouchDBPaginator(adapter, query, 10, User);

// Get the first page
const page1 = await paginator.page(1);

// Get the next page
const page2 = await paginator.page(2);

Classes

CouchDBPaginator

Initializes a paginator for CouchDB query results

CouchDBPaginator

Initializes a paginator for CouchDB query results

Members

# bookMark

Stores the bookmark returned by CouchDB for continuing pagination

Bookmark for CouchDB pagination

View Source query/Paginator.ts, line 32

# count

Not supported in CouchDB - throws an error when accessed

Gets the total record count

View Source query/Paginator.ts, line 48

# total

Not supported in CouchDB - throws an error when accessed

Gets the total number of pages

View Source query/Paginator.ts, line 39

Methods

# count() → {number}

Not supported in CouchDB - throws an error when accessed

Gets the total record count

View Source query/Paginator.ts, line 201

Always throws as this functionality is not available in CouchDB

InternalError

Never returns as it throws an error

number

# async page(pageopt) → {Promise.<Array.<R>>}

Executes the query with pagination and processes the results

Retrieves a specific page of results

sequenceDiagram participant Client participant CouchDBPaginator participant Adapter participant CouchDB Client->>CouchDBPaginator: page(pageNumber) Note over CouchDBPaginator: Clone statement CouchDBPaginator->>CouchDBPaginator: validatePage(page) alt page !== 1 CouchDBPaginator->>CouchDBPaginator: Check bookmark alt No bookmark CouchDBPaginator-->>Client: Throw PagingError else Has bookmark CouchDBPaginator->>CouchDBPaginator: Add bookmark to statement end end CouchDBPaginator->>Adapter: raw(statement, false) Adapter->>CouchDB: Execute query CouchDB-->>Adapter: Return results Adapter-->>CouchDBPaginator: Return MangoResponse Note over CouchDBPaginator: Process results alt Has warning CouchDBPaginator->>CouchDBPaginator: Log warning end CouchDBPaginator->>CouchDBPaginator: Check for clazz alt No clazz CouchDBPaginator-->>Client: Throw PagingError else Has clazz CouchDBPaginator->>CouchDBPaginator: Find primary key alt Has fields in statement CouchDBPaginator->>CouchDBPaginator: Use docs directly else No fields CouchDBPaginator->>CouchDBPaginator: Process each document loop For each document CouchDBPaginator->>CouchDBPaginator: Extract original ID CouchDBPaginator->>Adapter: revert(doc, clazz, pkDef.id, parsedId) end end CouchDBPaginator->>CouchDBPaginator: Store bookmark CouchDBPaginator->>CouchDBPaginator: Update currentPage CouchDBPaginator-->>Client: Return results end
Parameters:
Name Type Attributes Default Description
page number <optional>
1

The page number to retrieve

View Source query/Paginator.ts, line 283

If trying to access a page other than the first without a bookmark, or if no class is defined

PagingError

A promise that resolves to an array of results

Promise.<Array.<R>>

# protected prepare(rawStatement) → {MangoQuery}

Modifies the raw query to include pagination parameters

Prepares a query for pagination

Parameters:
Name Type Description
rawStatement MangoQuery

The original Mango query

View Source query/Paginator.ts, line 221

The prepared query with pagination parameters

MangoQuery

# total() → {number}

Not supported in CouchDB - throws an error when accessed

Gets the total number of pages

View Source query/Paginator.ts, line 193

Always throws as this functionality is not available in CouchDB

InternalError

Never returns as it throws an error

number