sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur man använder GridFS för att lagra bilder med Node.js och Mongoose

Jag var inte nöjd med det högst betygsatta svaret här och därför tillhandahåller jag ett nytt:Det slutade med att jag använde nodmodulen 'gridfs-stream' (bra dokumentation där!) som kan installeras via npm.Med den och i kombination med mangust kan det se ut så här:

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);
}

Observera att sökvägen är sökvägen till filen på det lokala systemet.

När det gäller min läsfunktion för filen, för mitt fall behöver jag bara strömma filen till webbläsaren (med hjälp av 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 och Node.js och Socket.io Frågor

  2. Infoga json-filen i mongodb

  3. php-redis - Finns det något sätt att lagra PHP-objekt i Redis utan att serialisera det?

  4. Bästa praxis för MongoDB Security