supercouch.nano
TypeScript icon, indicating that this package has built-in type declarations

1.3.0 • Public • Published

supercouch.nano

Add SuperCouch power to nano (apache/couchdb-nano), the NodeJS CouchDB client.

Install

npm install --save supercouch.nano

Example

const nano = require('nano')('http://localhost:5984')
const {supercouch} = require('supercouch');
const db = supercouch(nano.use('foo'));

Then make some supercouch powered requests.

// Retrieve the list of users that logged-in in the last hour
const userIds = await db.view<string>("design", "view", {
  start_key: ["$SSET", "UsersIndex", "ByDate", +new Date() - 3600000],
  end_key:   ["$SSET", "UsersIndex", "ByDate", +new Date()],
  include_scores: false, // because we don't need the login date
});

// Retrieve the last state for each of those users.
const users = await db.view<UserModel>("design", "view", {
  keys: usersIds.rows.map(userId => ["$SSET", "Users", userId.value]),
}));

Check the https://github.com/j3k0/supercouch for more details.

API

supercouch.DocumentViewParams

Extends nano.DocumentViewParams with 2 additional parameters:

  • include_scores: boolean (default: true)
    • Include the score for each element alongside the value (see supercouch.DocumentViewResponse).
    • It's enabled by default and has a minimal impact on performance, set to false if you don't need the scores.
  • include_total_rows: boolean (default: true)
    • Include total_rows in the response.
    • When limit or offset are set, this requires an extra request. Set to false when you don't need the total.

supercouch.DocumentViewResponse

Extends nano.DocumentViewResponse with an additional field:

  • rows[].score: number
    • Include the score of the element in the sorted set.

supercouch.DocumentScore

Extends nano.DocumentStore with the definition of the view method that accepts supercouch.DocumentViewParams and returns a supercouch.DocumentViewResponse.

supercouch.supercouch(db, config)

  • db: nano.DocumentScope<D>
  • config: supercouch.SuperCouchConfig

Add SuperCouch powers to a nano db object. config defines the connection to SuperCouch's backend.

See supercouch.SuperCouchConfig

supercouch.SuperCouchConfig

Define the configuration of the SuperCouch extension, i.e. how to connect to the backend storage.

{
  redisClient?: redis.RedisClientType
}

Pass in a redis client (from the redis npm module) that SuperCouch will use for $SSET queries.

License

MIT

Copyright (c) 2022, Jean-Christophe Hoelt hoelt@fovea.cc

Readme

Keywords

none

Package Sidebar

Install

npm i supercouch.nano

Weekly Downloads

18

Version

1.3.0

License

MIT

Unpacked Size

25.5 kB

Total Files

10

Last publish

Collaborators

  • jchoelt