本插件基于 node-mongodb-native,提供了 MongoDB 官方 driver 及 API。插件对一些常用 API 进行了简单封装以简化使用,同时保留了所有原版属性。

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

English

非 Egg.js 用户请使用 easy-mongodb

本插件基于 node-mongodb-native,提供了 MongoDB 官方 driver 及 API。

插件对一些常用 API 进行了简单封装以简化使用,同时保留了所有原版属性。例如,使用原版 API 进行一次查找需要写

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

封装后

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

此插件完全支持 Promise,并强烈推荐使用 async/await。

安装

$ npm i egg-mongo-native --save

开启插件

// config/plugin.js
exports.mongo = {
  enable: true,
  package: 'egg-mongo-native',
};

配置

单实例

// {app_root}/config/config.default.js
exports.mongo = {
  client: {
    host: 'host',
    port: 'port',
    name: 'test',
    user: 'user',
    password: 'password',
    options: {},
  },
};

副本集 (v2.1.0 以上 )

// mongodb://host1:port1,host2:port2/name?replicaSet=test
exports.mongo = {
  client: {
    host: 'host1,host2',
    port: 'port1,port2',
    name: 'name',
    options: {
      replicaSet: 'test',
    },
  },
};
// mongodb://host:port1,host:port2/name?replicaSet=test
exports.mongo = {
  client: {
    host: 'host', // or ['host']
    port: 'port1,port2', // or ['port1', 'port2']
    name: 'name',
    options: {
      replicaSet: 'test',
    },
  },
};

多个数据库实例配置

不能 clientclients 都  设置,否则会报错。

// {app_root}/config/config.default.js
exports.mongo = {
  clients: {
    db1: {
      host: 'host',
      port: 'port',
      name: 'db1',
      user: 'user',
      password: 'password',
      options: {},
    },
    db2: {
      host: 'host',
      port: 'port',
      name: 'db2',
      user: 'user',
      password: 'password',
      options: {},
    },
  },
};

请到 config/config.default.js 查看详细配置项说明。

使用示例

本插件提供的 API 只是对原版 API 进行了必要的简化,所有属性名称与原版 API 一致。所有针对文档操作的 API,通常接受 2 个参数,第一个参数是 collection 名称,第二个参数是一个对象,属性名即为原版 API 的所有参数。例如,使用原版 API 进行一次插入

db.collection('name').insertOne(doc, options);

使用插件 API

const args = { doc, options };
app.mongo.insertOne('name', args);

连接多个数据库时

const args = { doc, options };
app.mongo.get('db1').insertOne('name', args);

可以看到 args 就是包含原版 API 参数的一个对象。

完整 API(现已支持 MongoDB 4.0 的事务)和更多示例请参考 easy-mongodb

License

MIT


egg mongo native 安装 配置 使用 说明



Copyright © 2006-2020 quping.com, All rights reserved. 鲁ICP备09092435号-1

QQ 微信