npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@caruuto/api-mongodb

v1.0.1

Published

A MongoDB adapter for an API

Downloads

7

Readme

API MongoDB Adapter

npm version Coverage Status JavaScript Style Guide semantic-release

Requirements

  • API
  • A running MongoDB server

Usage

To use this adapter with your API installation, you'll need to add it to your API's dependencies:

$ cd my-api
$ npm install @caruuto/api-mongodb

Tests

To run the test suite you'll need a MongoDB server running on localhost with the default port of 27017. If you've changed the default port, modify the test configuration file at config/mongodb.test.json. This file is created from config/mongodb.test.json.sample the first time the test suite is run.

Run the tests:

$ git clone https://github.com/caruuto/api-mongodb.git
$ cd api-mongodb
$ npm test

Configuration

Configuration Files

Configuration settings are defined in JSON files within a /config directory at the root of your API application. API uses a configuration file for the MongoDB connector that matches the environment you are running under.

The naming convention for MongoDB configuration files follows the format mongodb.<environment>.json

Example

Assuming that the entry point for your application is main.js and launching it with the following command, API will attempt to load a MongoDB configuration file named mongodb.production.js.

$ NODE_ENV=production node main.js

Application Anatomy

my-api/
  config/                     # contains environment-specific configuration properties
    config.development.json   # main API configuration file, development environment
    config.production.json
    mongodb.development.json  # MongoDB configuration file, development environment
    mongodb.production.json

  main.js                     # the entry point of the app

  package.json

  workspace/
    collections/              # collection schema files
    endpoints/                # custom Javascript endpoints

Configuration

Specifies the MongoDB database(s) to connect to.

{
  "enableCollectionDatabases": false,
  "databases": [
    {
      "id": "authdb",
      "hosts": "127.0.0.1:27017",
      "username": "johndoe",
      "password": "topsecret"
    },
    {
      "default": true,
      "id": "secondary",
      "hosts": "127.0.0.1:27018"
    }
  ]
}

Configuration Properties

enableCollectionDatabases

Determines whether the database portion of the URL should dictate the actual MongoDB database to be used. When enabled, the request GET /1.0/mydatabase/mycollection would look for documents in a database with the ID mydatabase. If disabled, the default database (i.e. containing the property default: true in the configuration file) will be used.

databases

The list of MongoDB databases to be used, as an array. Each database must be defined as an object with the following properties:

authDatabase

The database to authenticate against when supplying a username and password.

  • Format: String
  • Default: ''
  • Environment variable: DB_{database}_AUTH_SOURCE
  • Required: No
authMechanism

If no authentication mechanism is specified or the mechanism DEFAULT is specified, the driver will attempt to authenticate using the SCRAM-SHA-1 authentication method if it is available on the MongoDB server. If the server does not support SCRAM-SHA-1 the driver will authenticate using MONGODB-CR.

  • Format: String
  • Default: ''
  • Environment variable: DB_{database}_AUTH_MECHANISM
  • Required: No
default

Whether this database should be used as the default (main) database. When no database has the default flag, the first one in the array will be used as default.

  • Format: Boolean
  • Default: false
  • Environment variable: DB_{database}_DEFAULT
  • Required: No
hosts

Comma-separated string of MongoDB hosts, including port (e.g. localhost,localhost:27018,localhost:27019).

  • Format: String
  • Environment variable: DB_{database}_HOSTS
  • Required: Yes
id

Database unique identifier.

  • Format: String
  • Required: Yes
maxPoolSize

The maximum number of connections in the connection pool.

  • Format: Number
  • Default: 0
  • Environment variable: DB_{database}_MAX_POOL
  • Required: No
password

The access password, if one is needed.

  • Format: String
  • Default: ""
  • Environment variable: DB_{database}_PASSWORD
  • Required: No
readPreference

How MongoDB routes read operations to the members of a replica set - see https://docs.mongodb.com/manual/reference/read-preference/.

  • Format: "primary", "primaryPreferred", "secondary", "secondaryPreferred" or "nearest"
  • Default: "secondaryPreferred"
  • Required: No
replicaSet

The name of the replica set to identify the hosts.

  • Format: String
  • Required: No
ssl

Whether to initiate the connection with TLS/SSL.

  • Format: Boolean
  • Default: false
  • Required: No
username

The access username, if one is needed.

  • Format: String
  • Default: ""
  • Environment variable: DB_{database}_USERNAME
  • Required: No