egg-gridfs
v2.1.2
Published
egg plugin for MongoDB GridFS.
Downloads
3
Maintainers
Readme
egg-gridfs
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
- use MongoDB GridFS simply
More GridFS Api See GridFSBucket
// 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.