2.1.2 • Published 4 years ago

egg-gridfs v2.1.2

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

egg-gridfs

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

Install

$ 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

  // upload file to database 'fileDb'(config).
  // or use uploadOnly for keeping only one copy of file(too slow for big file).
  async upload(fileStream) {
    return await this.app.mongo.upload(fileStream);
  }

  // download file from database 'fileDb'(config).
  async download(id) {
    return await this.app.mongo.download(id);
  }
  • use MongoDB GridFS with origin GridFSBucket

    More GridFS Api See GridFSBucket

const fs = require('fs');

// get GridFS handle for database 'fileDb'(config)
const gridfs = this.app.mongo.gridfs;
const ObjectID = this.app.mongo.ObjectID
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