## GridFile **Kind**: global class * [GridFile](#GridFile) * [new GridFile()](#new_GridFile_new) * _instance_ * [.length](#GridFile+length) : Number * [.chunkSize](#GridFile+chunkSize) : Number * [.uploadDate](#GridFile+uploadDate) : Date * [.md5](#GridFile+md5) : String * [.filename](#GridFile+filename) : String * [.contentType](#GridFile+contentType) : String * [.metadata](#GridFile+metadata) : Any * [.aliases](#GridFile+aliases) : Array.<String> * [.createdAt](#GridFile+createdAt) : Date * [.chunkSizeBytes](#GridFile+chunkSizeBytes) : Number * [.getUploadStream](#GridFile+getUploadStream) ⇒ GridFSBucketWriteStream * [.getDownloadStream](#GridFile+getDownloadStream) ⇒ GridFSBucketReadStream * [.uploadStream](#GridFile+uploadStream) ⇒ GridFSBucketWriteStream * [.downloadStream](#GridFile+downloadStream) ⇒ GridFSBucketWriteStream * [.upload](#GridFile+upload) ⇒ [Promise.<GridFile>](#GridFile) * [.download](#GridFile+download) ⇒ Promise.<Void> * _static_ * [.getBucket](#GridFile.getBucket) ⇒ GridFSBucket * [.findOneAndDelete](#GridFile.findOneAndDelete) ⇒ [Promise.<GridFile>](#GridFile) * [.findByIdAndDelete](#GridFile.findByIdAndDelete) ⇒ [Promise.<GridFile>](#GridFile) ### new 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 : Number **Kind**: instance property of [GridFile](#GridFile) ### gridFile.chunkSize : Number **Kind**: instance property of [GridFile](#GridFile) ### gridFile.uploadDate : Date **Kind**: instance property of [GridFile](#GridFile) ### gridFile.md5 : String **Kind**: instance property of [GridFile](#GridFile) ### gridFile.filename : String A MD5 hash is auto-generated when a file is uploaded **Kind**: instance property of [GridFile](#GridFile) ### gridFile.contentType : String Value is be used as `contentType` option when opening an upload stream: [GridFSBucket#openUploadStream](https://mongodb.github.io/node-mongodb-native/3.6/api/GridFSBucket.html#openUploadStream) **Kind**: instance property of [GridFile](#GridFile) ### gridFile.metadata : Any Value is be used as `metadata` option when opening an upload stream: [GridFSBucket#openUploadStream](https://mongodb.github.io/node-mongodb-native/3.6/api/GridFSBucket.html#openUploadStream) **Kind**: instance property of [GridFile](#GridFile) ### gridFile.aliases : Array.<String> Value is be used as `aliases` option when opening an upload stream: [GridFSBucket#openUploadStream](https://mongodb.github.io/node-mongodb-native/3.6/api/GridFSBucket.html#openUploadStream) **Kind**: instance property of [GridFile](#GridFile) ### gridFile.createdAt : Date Alias for GridFile#uploadDate **Kind**: instance property of [GridFile](#GridFile) ### gridFile.chunkSizeBytes : Number Value is be used as `chunkSizeBytes` option when opening an upload stream: [GridFSBucket#openUploadStream](https://mongodb.github.io/node-mongodb-native/3.6/api/GridFSBucket.html#openUploadStream) **Kind**: instance property of [GridFile](#GridFile) ### gridFile.getUploadStream ⇒ GridFSBucketWriteStream Get a GridFS stream to upload a file **Kind**: instance property of [GridFile](#GridFile) **Returns**: GridFSBucketWriteStream - Upload Stream **Example** ```js const uploadStream = gridFile.getUploadStream() ``` ### gridFile.getDownloadStream ⇒ GridFSBucketReadStream Get a GridFS stream to download a file **Kind**: instance property of [GridFile](#GridFile) **Returns**: GridFSBucketReadStream - Download Stream **Example** ```js const downloadStream = gridFile.getDownloadStream() ``` ### gridFile.uploadStream ⇒ GridFSBucketWriteStream Upload a file to GridFS **Kind**: instance property of [GridFile](#GridFile) **Returns**: GridFSBucketWriteStream - Upload Stream | Param | Type | Description | | --- | --- | --- | | FileStream | Stream | Read stream of file to upload | **Example** ```js const fs = require('fs') const fileStream = fs.createReadStream('/path/to/file') const uploadStream = gridFile.uploadStream(fileStream) uploadStream.on('finish', (file) => { console.log(file) }) ``` ### gridFile.downloadStream ⇒ GridFSBucketWriteStream Download a file from GridFS **Kind**: instance property of [GridFile](#GridFile) **Returns**: GridFSBucketWriteStream - Download Stream | Param | Type | Description | | --- | --- | --- | | FileStream | Stream | Write stream of file to download into | **Example** ```js const fs = require('fs') const fileStream = fs.createWriteStream('/path/to/file') const DownloadStream = gridFile.downloadStream(fileStream) fileStream.on('finish', () => { console.log('File downloaded successfully') }) ``` ### gridFile.upload ⇒ [Promise.<GridFile>](#GridFile) Upload a file to GridFS **Kind**: instance property of [GridFile](#GridFile) **Returns**: [Promise.<GridFile>](#GridFile) - GridFile as a Promise | Param | Type | Description | | --- | --- | --- | | FileStream | Stream | Read stream of file to upload | | Callback | function | Callback function | **Example** ```js const fs = require('fs') const fileStream = fs.createReadStream('/path/to/file') const uploadedFile = await gridFile.upload(fileStream) ``` **Example** ```js // callback gridFile.upload(filestream, (err, uploadedFile) => { if(err){ console.error(err) } else { console.log(uploadedFile) } }) ``` ### gridFile.download ⇒ Promise.<Void> Download a file from GridFS **Kind**: instance property of [GridFile](#GridFile) **Returns**: Promise.<Void> - Promise | Param | Type | Description | | --- | --- | --- | | FileStream | Stream | Write stream of file to download into | | Callback | function | Callback function | **Example** ```js const fs = require('fs') const fileStream = fs.createWriteStream('/path/to/file') await gridFile.download(fileStream) ``` **Example** ```js // callback gridFile.download(fileStream, (err){ if(err){ console.error(err) } else { console.log('File downloaded successfully') } }) ``` ### GridFile.getBucket ⇒ GridFSBucket Get the GridFS bucket created from the Mongoose connection **Kind**: static property of [GridFile](#GridFile) **Returns**: GridFSBucket - GridFS Bucket **Example** ```js const bucket = GridFile.getBucket() ``` ### GridFile.findOneAndDelete ⇒ [Promise.<GridFile>](#GridFile) Delete a file from GridFS using [GridFSBucket#delete](https://mongodb.github.io/node-mongodb-native/3.6/api/GridFSBucket.html#delete) **Kind**: static property of [GridFile](#GridFile) **Returns**: [Promise.<GridFile>](#GridFile) - Deleted GridFile as a Promise **Example** ```js const deletedFile = await GridFile.findOneAndDelete({ filename: 'image.png' }) ``` ### GridFile.findByIdAndDelete ⇒ [Promise.<GridFile>](#GridFile) Delete a file from GridFS using [GridFSBucket#delete](https://mongodb.github.io/node-mongodb-native/3.6/api/GridFSBucket.html#delete) **Kind**: static property of [GridFile](#GridFile) **Returns**: [Promise.<GridFile>](#GridFile) - Deleted GridFile as a Promise **Example** ```js const deletedFile = await GridFile.findByIdAndDelete('some-id') ```