MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách sử dụng GridFS để lưu trữ hình ảnh bằng Node.js và Mongoose

Tôi không hài lòng với câu trả lời được xếp hạng cao nhất ở đây và vì vậy tôi đang cung cấp một câu trả lời mới:Tôi đã kết thúc bằng cách sử dụng mô-đun nút 'gridfs-stream' (tài liệu tuyệt vời ở đó!) Có thể được cài đặt qua npm. Với nó, và trong kết hợp với mongoose, nó có thể trông như thế này:

var fs = require('fs');
var mongoose = require("mongoose");
var Grid = require('gridfs-stream');
var GridFS = Grid(mongoose.connection.db, mongoose.mongo);

function putFile(path, name, callback) {
    var writestream = GridFS.createWriteStream({
        filename: name
    });
    writestream.on('close', function (file) {
      callback(null, file);
    });
    fs.createReadStream(path).pipe(writestream);
}

Lưu ý rằng đường dẫn là đường dẫn của tệp trên hệ thống cục bộ.

Đối với chức năng đọc tệp của tôi, đối với trường hợp của tôi, tôi chỉ cần truyền tệp vào trình duyệt (sử dụng express):

try {
    var readstream = GridFS.createReadStream({_id: id});
    readstream.pipe(res);
} catch (err) {
    log.error(err);
    return next(errors.create(404, "File not found."));
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sử dụng Mongosniff để làm rõ những gì MongoDB của bạn nghe và nói

  2. Redis hoặc Mongo để xác định xem một số có nằm trong phạm vi không?

  3. Cách tạo id đối tượng duy nhất trong mongodb

  4. Truy vấn MongoDB với giá trị null

  5. mongodb $ trong giới hạn