2016-07-13 19 views
0

Ich bin in einen Pufferüberlauf geraten, wenn ich versuche, Bilddaten aus MongoDB zu ziehen und versuchen, es in Base64 zu konvertieren. Ich weiß, dass das Speichern von Bildern in Mongo nicht optimal ist, aber ich würde es gerne tun, nur um es zu tun.Pufferüberlauf beim Konvertieren von Binär in Base64

Hier ist der Fehler, die ich empfangen habe:

'start-server' errored after 6.28 s 
[22:21:05] Error: stdout maxBuffer exceeded 
    at Socket.<anonymous> (child_process.js:255:14) 
    at emitOne (events.js:90:13) 
    at Socket.emit (events.js:182:7) 
    at readableAddChunk (_stream_readable.js:153:18) 
    at Socket.Readable.push (_stream_readable.js:111:10) 
    at Pipe.onread (net.js:529:20) 

Hier ist die Strecke, die die Datenanrufe und transformiert:

app.get('/api/photos', function (req, res) { 
    var photos = Photo.find({}, function(err, photos) { 
     if(photos.length != 0){ 
     var photosData = []; 
     for(var i = 0; i < photos.length; i++){ 
      var thumb = new Buffer(photos[i].img.data).toString('base64'); 
      photosData.push(thumb); 
     } 
     res.json({info: 'it worked', 
      photos: photosData 
     }); 
     }else{ 
     res.json({info: 'it worked', 
      photos: false 
     }); 
     } 
    }); 
    }) 

Antwort

0

diese Frage Siehe maxBuffers: Reading binary data from a child process in Node.js

Diese eigentlich kam aus meiner Schluckdatei, da ich eine Exec-Task hatte, die meinen Server startete. Musste den maxBuffer zu diesem untergeordneten Prozess hinzufügen, wie unten zu sehen ist.

gulp.task('start-server', ['build', 'watch'], function (cb) { 
    if(!started){ 
     exec('node dist/server.js', {maxBuffer: 5000*1024}, function (err, stdout, stderr) { 
     console.log(stdout); 
     console.log(stderr); 
     cb(err); 
     started = true; 
     }); 
    } 
});