The official Apache CouchDB client library for Node.js, providing a minimalistic interface to CouchDB's HTTP API.
Nano is the official Apache CouchDB client library for Node.js, providing a minimalistic and promise-based interface to interact with CouchDB databases. It allows developers to perform all CouchDB operations—like document management, replication, views, and changes feeds—directly from Node.js applications with minimal abstraction.
Node.js developers building applications that use Apache CouchDB as their database backend, particularly those who prefer a lightweight, non-opinionated client that closely mirrors CouchDB's native HTTP API.
Developers choose Nano because it's the officially maintained CouchDB client for Node.js, offering reliability, comprehensive feature coverage, and a design philosophy that minimizes abstraction. Its native Promise support, TypeScript definitions, and stream capabilities make it a modern and efficient choice for CouchDB interactions.
Nano: The official Apache CouchDB library for Node.js
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
All major database calls return Promises, seamlessly supporting modern async/await patterns as demonstrated in the getting started examples, reducing callback hell.
Covers all core CouchDB operations including document CRUD, attachments, views, Mango queries, replication, and partitioned databases, detailed in the extensive function list.
Includes built-in TypeScript definitions, enabling type-safe development and better IDE support, shown in the README example with custom interfaces and classes.
Offers `...AsStream` functions that proxy CouchDB responses as Node.js streams, allowing efficient piping for large datasets or attachments, as illustrated in the pipes section.
Nano 11 introduces a breaking change by requiring Node.js 18+ due to the use of built-in fetch, forcing teams on older Node versions to stick with Nano 10 or undertake a potentially disruptive upgrade.
As a thin layer over CouchDB's HTTP API, it lacks higher-level conveniences like automatic connection management or error retries, requiring manual setup of undici options for production-scale use.
Errors are passed directly from CouchDB without transformation, which can be challenging for developers unfamiliar with CouchDB's specific error formats and codes, complicating debugging.