sql >> Database >  >> NoSQL >> MongoDB

Hoe GridFS te gebruiken om afbeeldingen op te slaan met Node.js en Mongoose

Ik was niet tevreden met het best beoordeelde antwoord hier en daarom geef ik een nieuwe:ik heb uiteindelijk de node-module 'gridfs-stream' gebruikt (geweldige documentatie daar!) Die kan worden geïnstalleerd via npm. Hiermee en in combinatie met mangoest, zou het er zo uit kunnen zien:

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

Merk op dat pad het pad is van het bestand op het lokale systeem.

Wat betreft mijn leesfunctie van het bestand, voor mijn geval hoef ik het bestand alleen maar naar de browser te streamen (met behulp van 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. Hiërarchische zoekopdrachten met Mongo met $graphLookup

  2. Mongo Geeft 'dubbele sleutelfout' op niet-unieke velden

  3. Mongoose verwijdert (pull) een document binnen een array, werkt niet met ObjectID

  4. Procedure:gegevens van S3 indexeren met CDP Data Hub