MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So verwenden Sie GridFS zum Speichern von Bildern mit Node.js und Mongoose

Ich war mit der am besten bewerteten Antwort hier nicht zufrieden und liefere daher eine neue:Am Ende habe ich das Knotenmodul ‚gridfs-stream‘ (tolle Dokumentation dort!) verwendet, das über npm installiert werden kann. Damit und in Kombination mit Mungo könnte das so aussehen:

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

Beachten Sie, dass Pfad der Pfad der Datei auf dem lokalen System ist.

Was meine Lesefunktion der Datei betrifft, muss ich in meinem Fall nur die Datei an den Browser streamen (mit Express):

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