### Table of Contents - [GridFile][1] - [GridFile#length][2] - [GridFile#chunkSize][3] - [GridFile#uploadDate][4] - [GridFile#md5][5] - [GridFile#filename][6] - [GridFile#contentType][7] - [GridFile#metadata][8] - [GridFile#aliases][9] - [GridFile#createdAt][10] - [GridFile#chunkSizeBytes][11] - [GridFile.getBucket][12] - [Examples][13] - [GridFile.findOneAndDelete][14] - [Examples][15] - [GridFile.findByIdAndDelete][16] - [Examples][17] - [GridFile#getUploadStream][18] - [Examples][19] - [GridFile#getDownloadStream][20] - [Examples][21] - [GridFile#uploadStream][22] - [Parameters][23] - [Examples][24] - [GridFile#downloadStream][25] - [Parameters][26] - [Examples][27] - [GridFile#upload][28] - [Parameters][29] - [Examples][30] - [GridFile#download][31] - [Parameters][32] - [Examples][33] ## GridFile Mongoose schema for MongoDB GridFS ```javascript const mongoose = require('mongoose') const schema = require('gridfile') const GridFile = mongoose.model('GridFile', schema) const gridFile = new GridFile() ``` ## GridFile#length Type: [Number][34] ## GridFile#chunkSize Type: [Number][34] ## GridFile#uploadDate Type: [Date][35] ## GridFile#md5 Type: [String][36] ## GridFile#filename A MD5 hash is auto-generated when a file is uploaded Type: [String][36] ## GridFile#contentType Value is be used as `contentType` option when opening an upload stream: [GridFSBucket#openUploadStream][37] Type: [String][36] ## GridFile#metadata Value is be used as `metadata` option when opening an upload stream: [GridFSBucket#openUploadStream][37] Type: Any ## GridFile#aliases Value is be used as `aliases` option when opening an upload stream: [GridFSBucket#openUploadStream][37] Type: \[[String][36]] ## GridFile#createdAt Alias for GridFile#uploadDate Type: [Date][35] ## GridFile#chunkSizeBytes Value is be used as `chunkSizeBytes` option when opening an upload stream: [GridFSBucket#openUploadStream][37] Type: [Number][34] ## GridFile.getBucket Get the GridFS bucket created from the Mongoose connection Type: [Function][38] ### Examples ```javascript const bucket = GridFile.getBucket() ``` Returns **GridFSBucket** GridFS Bucket ## GridFile.findOneAndDelete Delete a file from GridFS using [GridFSBucket#delete][39] Type: [Function][38] ### Examples ```javascript const deletedFile = await GridFile.findOneAndDelete({ filename: 'image.png' }) ``` Returns **[Promise][40]<[GridFile][41]>** Deleted GridFile as a Promise ## GridFile.findByIdAndDelete Delete a file from GridFS using [GridFSBucket#delete][39] Type: [Function][38] ### Examples ```javascript const deletedFile = await GridFile.findByIdAndDelete('some-id') ``` Returns **[Promise][40]<[GridFile][41]>** Deleted GridFile as a Promise ## GridFile#getUploadStream Get a GridFS stream to upload a file Type: [Function][38] ### Examples ```javascript const uploadStream = gridFile.getUploadStream() ``` Returns **GridFSBucketWriteStream** Upload Stream ## GridFile#getDownloadStream Get a GridFS stream to download a file Type: [Function][38] ### Examples ```javascript const downloadStream = gridFile.getDownloadStream() ``` Returns **GridFSBucketReadStream** Download Stream ## GridFile#uploadStream Upload a file to GridFS Type: [Function][38] ### Parameters - `FileStream` **[Stream][42]** Read stream of file to upload ### Examples ```javascript const fs = require('fs') const fileStream = fs.createReadStream('/path/to/file') const uploadStream = gridFile.uploadStream(fileStream) uploadStream.on('finish', (file) => { console.log(file) }) ``` Returns **GridFSBucketWriteStream** Upload Stream ## GridFile#downloadStream Download a file from GridFS Type: [Function][38] ### Parameters - `FileStream` **[Stream][42]** Write stream of file to download into ### Examples ```javascript const fs = require('fs') const fileStream = fs.createWriteStream('/path/to/file') const DownloadStream = gridFile.downloadStream(fileStream) fileStream.on('finish', () => { console.log('File downloaded successfully') }) ``` Returns **GridFSBucketWriteStream** Download Stream ## GridFile#upload Upload a file to GridFS Type: [Function][38] ### Parameters - `FileStream` **[Stream][42]** Read stream of file to upload - `Callback` **[Function][38]** Callback function ### Examples ```javascript const fs = require('fs') const fileStream = fs.createReadStream('/path/to/file') const uploadedFile = await gridFile.upload(fileStream) ``` ```javascript // callback gridFile.upload(filestream, (err, uploadedFile) => { if(err){ console.error(err) } else { console.log(uploadedFile) } }) ``` Returns **[Promise][40]<[GridFile][41]>** GridFile as a Promise ## GridFile#download Download a file from GridFS Type: [Function][38] ### Parameters - `FileStream` **[Stream][42]** Write stream of file to download into - `Callback` **[Function][38]** Callback function ### Examples ```javascript const fs = require('fs') const fileStream = fs.createWriteStream('/path/to/file') await gridFile.download(fileStream) ``` ```javascript // callback gridFile.download(fileStream, (err){ if(err){ console.error(err) } else { console.log('File downloaded successfully') } }) ``` Returns **[Promise][40]<Void>** Promise [1]: #gridfile [2]: #gridfilelength [3]: #gridfilechunksize [4]: #gridfileuploaddate [5]: #gridfilemd5 [6]: #gridfilefilename [7]: #gridfilecontenttype [8]: #gridfilemetadata [9]: #gridfilealiases [10]: #gridfilecreatedat [11]: #gridfilechunksizebytes [12]: #gridfilegetbucket [13]: #examples [14]: #gridfilefindoneanddelete [15]: #examples-1 [16]: #gridfilefindbyidanddelete [17]: #examples-2 [18]: #gridfilegetuploadstream [19]: #examples-3 [20]: #gridfilegetdownloadstream [21]: #examples-4 [22]: #gridfileuploadstream [23]: #parameters [24]: #examples-5 [25]: #gridfiledownloadstream [26]: #parameters-1 [27]: #examples-6 [28]: #gridfileupload [29]: #parameters-2 [30]: #examples-7 [31]: #gridfiledownload [32]: #parameters-3 [33]: #examples-8 [34]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number [35]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Date [36]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [37]: https://mongodb.github.io/node-mongodb-native/3.6/api/GridFSBucket.html#openUploadStream [38]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function [39]: https://mongodb.github.io/node-mongodb-native/3.6/api/GridFSBucket.html#delete [40]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise [41]: #gridfile [42]: https://nodejs.org/api/stream.html