2016-07-13 4 views
0

Я запускаю переполнение буфера, когда пытаюсь извлечь данные изображения из mongoDB и попытаться преобразовать его в base64. Я знаю, что хранение изображений в монго не является оптимальным, но я хотел бы сделать это, просто для этого.переполнение буфера при преобразовании двоичного в base64

Вот ошибка, которую я получаю:

'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) 

Вот маршрут, который вызывает и преобразует данные:

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

ответ

0

Посмотреть этот вопрос maxBuffers: Reading binary data from a child process in Node.js

Это на самом деле пришел из моего файла gulp, так как у меня была задача exec, которая запускала мой сервер. Пришлось добавить maxBuffer к этому дочернему процессу, как показано ниже.

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; 
     }); 
    } 
}); 
Смежные вопросы