Forked from aheckmann/storeImgInMongoWithMongoose.js
Created
November 13, 2017 02:27
-
-
Save Uzendayo/05f9ee46c8a29fc9372638d79b8204c2 to your computer and use it in GitHub Desktop.
Revisions
-
aheckmann revised this gist
Apr 17, 2012 . No changes.There are no files selected for viewing
-
aheckmann created this gist
Apr 17, 2012 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,72 @@ /** * Module dependencies */ var express = require('express'); var fs = require('fs'); var mongoose = require('mongoose'); var Schema = mongoose.Schema; // img path var imgPath = '/path/to/some/img.png'; // connect to mongo mongoose.connect('localhost', 'testing_storeImg'); // example schema var schema = new Schema({ img: { data: Buffer, contentType: String } }); // our model var A = mongoose.model('A', schema); mongoose.connection.on('open', function () { console.error('mongo is open'); // empty the collection A.remove(function (err) { if (err) throw err; console.error('removed old docs'); // store an img in binary in mongo var a = new A; a.img.data = fs.readFileSync(imgPath); a.img.contentType = 'image/png'; a.save(function (err, a) { if (err) throw err; console.error('saved img to mongo'); // start a demo server var server = express.createServer(); server.get('/', function (req, res, next) { A.findById(a, function (err, doc) { if (err) return next(err); res.contentType(doc.img.contentType); res.send(doc.img.data); }); }); server.on('close', function () { console.error('dropping db'); mongoose.connection.db.dropDatabase(function () { console.error('closing db connection'); mongoose.connection.close(); }); }); server.listen(3333, function (err) { var address = server.address(); console.error('server listening on http://%s:%d', address.address, address.port); console.error('press CTRL+C to exit'); }); process.on('SIGINT', function () { server.close(); }); }); }); });