Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Uzendayo/05f9ee46c8a29fc9372638d79b8204c2 to your computer and use it in GitHub Desktop.
Save Uzendayo/05f9ee46c8a29fc9372638d79b8204c2 to your computer and use it in GitHub Desktop.

Revisions

  1. @aheckmann aheckmann revised this gist Apr 17, 2012. No changes.
  2. @aheckmann aheckmann created this gist Apr 17, 2012.
    72 changes: 72 additions & 0 deletions storeImgInMongoWithMongoose.js
    Original 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();
    });
    });
    });

    });