@brickyang/easy-mongodb
TypeScript icon, indicating that this package has built-in type declarations

2.0.1 • Public • Published

NPM version NPM quality build status Test coverage David deps Known Vulnerabilities npm download

中文版

This lib base on node-mongodb-native, provides the official MongoDB native driver and APIs.

It wraps some frequently-used API to make it easy to use but keep all properties as it is. For example, to find a document you need this with official API

db.collection('name')
  .find(query, options)
  .skip(skip)
  .limit(limit)
  .project(project)
  .sort(sort)
  .toArray();

and with this lib

mongo.find('name', { query, skip, limit, project, sort, options });

If you are using Egg.js, please see egg-mongo-native.

Installation

npm install --save @brickyang/easy-mongodb

Configuration

Single

const config = {
  host: 'host',
  port: 'port',
  name: 'test',
  user: 'user',
  password: 'password',
  options: {},
};

Replica Set

// mongodb://host1:port1,host2:port2/name?replicaSet=test
const config = {
  host: 'host1,host2',
  port: 'port1,port2',
  name: 'name',
  options: { replicaSet: 'test' },
};

// mongodb://host:port1,host:port2/name?replicaSet=test
const config = {
  host: 'host',
  port: 'port1,port2',
  name: 'name',
  options: { replicaSet: 'test' },
};

Usage

The APIs provided by this lib usually need two arguments. The first is commonly the collection name, and the second is an object keeps the arguments of official API.

// TypeScript
// import MongoDB from '@brickyang/easy-mongodb';

const MongoDB = require('@brickyang/easy-mongodb').default;

const mongo = new MongoDB(config);

// connection
mongo
  .connect()
  .then(client => {
    // `client` is instance of connected MongoClient
  })
  .catch(error => {
    // handle error
  });

// or

mongo.on('connect', () => {
  // do something
});

mongo.on('error', error => {
  // handle error
});

// insert one doc
const args = { doc, options };
mongo.insertOne('collection', args);

// transaction
const session = mongo.startTransaction();
const args = { doc, { session } };
mongo.insertOne('collection1', args);
mongo.insertOne('collection2', args);
session.commitTransaction();

Members

  • db: Db instance
  • client: MongoClient instance
  • featureCompatibilityVersion: Transaction need '4.0' or above

API

Until now, this plugin provides these functions:

  • connect
  • insertOne
  • insertMany
  • findOne
  • findOneAndUpdate
  • findOneAndReplace
  • findOneAndDelete
  • updateMany
  • deleteMany
  • find
  • count: 已过时
  • countDocuments
  • estimatedDocumentCount
  • distinct
  • createIndex
  • listCollection
  • createCollection
  • aggregate
  • startSession
  • startTransaction

You can always use mongo.db and mongo.client to use all official APIs. Check the APIs here: Node.js MongoDB Driver API.

Promise

function create(doc) {
  mongo
    .insertOne('name', { doc })
    .then(result => console.log(result))
    .catch(error => console.error(error));
}

Async/Await

async function create(doc) {
  try {
    const result = await mongo.insertOne('name', { doc });
    console.log(result);
  } catch (error) {
    console.error(error);
  }
}

If you use mongo.db you could use callback(usually the last argument), but this lib doesn't support callback because Promise and async/await are better.

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i @brickyang/easy-mongodb

Weekly Downloads

97

Version

2.0.1

License

MIT

Unpacked Size

48.6 kB

Total Files

7

Last publish

Collaborators

  • brickyang