Class

NanoDispatch

NanoDispatch(timeoutopt)

Constructor

# new NanoDispatch(timeoutopt)

Handles the subscription to and processing of database change events from a Nano database, notifying observers when documents are created, updated, or deleted

Dispatcher for Nano database change events

classDiagram class Dispatch { +initialize() +updateObservers() } class NanoDispatch { -observerLastUpdate?: string -attemptCounter: number -timeout: number +constructor(timeout) #changeHandler() #initialize() } Dispatch <|-- NanoDispatch
Parameters:
Name Type Attributes Default Description
timeout number <optional>
5000

Timeout in milliseconds for change feed requests

View Source NanoDispatch.ts, line 5

Example
```typescript
// Create a dispatcher for a Nano database
const db = server.db.use('my_database');
const adapter = new NanoAdapter(db);
const dispatch = new NanoDispatch();

// The dispatcher will automatically subscribe to changes
// and notify observers when documents change
```

Methods

# async protected changeHandler(error, response, headersopt) → {Promise.<void>}

Handles the response from the Nano changes feed, processes the changes, and notifies observers about document changes

Processes database change events

sequenceDiagram participant D as NanoDispatch participant L as Logger participant O as Observers Note over D: Receive changes from Nano alt Error in response D->>L: Log error D-->>D: Return early end alt Response is string D->>D: Parse JSON from string end D->>D: Process changes D->>D: Group changes by table and operation loop For each table loop For each operation D->>O: updateObservers(table, operation, ids) D->>D: Update observerLastUpdate D->>L: Log successful dispatch end end
Parameters:
Name Type Attributes Description
error RequestError | null

Error object if the request failed

response

The changes response from Nano

headers any <optional>

Response headers (unused)

View Source NanoDispatch.ts, line 274

A promise that resolves when all changes have been processed

Promise.<void>

# close() → {Promise.<void>}

Stops the dispatcher and cleans up any active subscriptions or resources

Closes the dispatcher

View Source NanoDispatch.ts, line 239

A promise that resolves when the dispatcher has been closed

Promise.<void>

# async protected initialize() → {Promise.<void>}

Sets up the continuous changes feed subscription to the Nano database and handles reconnection attempts if the connection fails

Initializes the dispatcher and subscribes to database changes

sequenceDiagram participant D as NanoDispatch participant S as subscribeToCouch participant DB as Nano Database participant L as Logger D->>S: Call subscribeToCouch S->>S: Check adapter and native alt No adapter or native S-->>S: throw InternalError end S->>DB: changes(options, changeHandler) alt Success DB-->>S: Subscription established S-->>D: Promise resolves D->>L: Log successful subscription else Error DB-->>S: Error S->>S: Increment attemptCounter alt attemptCounter > 3 S->>L: Log error S-->>D: Promise rejects else attemptCounter <= 3 S->>L: Log retry S->>S: Wait timeout S->>S: Recursive call to subscribeToCouch end end

View Source NanoDispatch.ts, line 312

A promise that resolves when the subscription is established

Promise.<void>