javascript 使用mongoose / express在mongodb中存储/显示图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用mongoose / express在mongodb中存储/显示图像相关的知识,希望对你有一定的参考价值。

/**
 * 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();
      });
    });
  });

});

以上是关于javascript 使用mongoose / express在mongodb中存储/显示图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Mongodb 或 Mongoose 查询并使用 javascript 打印?

使用 javascript 数组方法更新 mongoose 中的嵌套数组

在 Mongoose 查询中使用 javascript Promise

使用 Mongoose+Node.js 在 MongoDB 中存储非结构化 JavaScript 对象

javascript 使用Mongoose进行MongoDB数据库连接

javascript 如何使用mongoose删除mongodb中的集合?