Skip to content
This repository has been archived by the owner on Jun 18, 2020. It is now read-only.

elixirChain/egg-mongo

Repository files navigation

egg-mongo

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

Install

# npm i egg-mongo --save
# 由于 egg-mongo 已经占用,故使用 egg-gridfs
$ npm i egg-gridfs --save

Usage

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

Configuration

// {app_root}/config/config.default.js
exports.mongo = {
  client: {
    uri: 'mongodb://127.0.0.1:12017',
    dbName: 'dataDb',
    options: {
      useNewUrlParser: true,
      useUnifiedTopology: true,
      authSource: 'admin',
      auth: {
        user: 'username',
        password: 'password',
      },
      // poolSize: 2,
      // ssl: true,
      // replicaSet: 'xxx',
    },
    fileDbName: 'fileDb',
    // fileOptions: {
    //   bucketName: 'test',
    //   chunkSizeBytes: 261120,
    // },
  },
};

see config/config.default.js for more detail.

Example

  • use MongoDB GridFS

More GridFS Api See GridFSBucket

const fs = require('fs');

const ObjectID = app.mongo.ObjectID
// get GridFS handle for database 'fileDb'(config)
const gridfs = this.app.mongo.gridfs;
const id = new ObjectID();

// upload file to database 'fileDb'(config).
fs.createReadStream('./upload.txt')
  .pipe(gridfs.openUploadStreamWithId(id, fileName))
  .on('error', function(error) {
    reject(error);
  })
  .on('finish', function() {
    resolve(id);
  });

// download file from database 'fileDb'(config).
gridfs.openDownloadStream(new ObjectID(id))
  .pipe(fs.createWriteStream('./download.txt'))
  .on('error', function(error) {
    assert.ifError(error);
  })
  .on('end', function() {
    console.log('done!');
    process.exit(0);
  });
  • normally access MongoDB

More Db Api See Db

// select database 'daName'(config)
const db = app.mongo.db;
// select collection 
const col = db.collection('test_collection');
// insert one document
await col.insertOne({ name: 'test' });
// find data, format to list
const list = await col.find({}).toArray();

Questions & Suggestions

Please open an issue here.

License

MIT