Вставка бинарного вложения в CouchDB с помощью nano

Я пытаюсь вставить двоичное вложение в CouchDB с помощью nano. У меня есть JPG в data, возвращенный http.request.

Я сохраняю его с помощью nano следующим образом

db.attachment.insert( id, 'content', self._data, contentType, {rev: rev}, function(err, body) { 
        callback();
});

но когда я пытаюсь просмотреть его через веб-браузер, изображение не работает.

Файл заполнен escape-символами UTF-8, которые видны, когда я вытаскиваю его с помощью CURL:

$ curl http://127.0.0.1:5984/web-crawler/doc-test.jpg/content
"ÿØÿà\u0000\u0010JFIF\u0000\u0001\u0001\u0001\u0000H\u0000H\u0000\u0000ÿâ\fXICC_PROFILE\u0000\u0001\u0001\u0000\u0000\fHLino\u0002\u0010\u0000\u0000mntrRGB XYZ \u0007Î\u0000\u0002\u0000\t\u0000\u0006\u00001\u0000\u0000acspMSFT\u0000\u0000\u0000\u0000IEC sRGB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000öÖ\u0000\u0001\u0000\u0000\u0000\u0000Ó-HP  \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\

Контент не поврежден, потому что, если я сохраню его в файл, я смогу увидеть изображение.

var fs = require('fs');
fs.writeFile('logo.jpg', data, 'binary', function(err){
  if (err) throw err
  console.log('File saved.')
});

Как правильно это сделать?


person Lukasz Kujawa    schedule 27.10.2013    source источник
comment
Если вы делаете curl -o doc-test.jpg http://127.0.0.1:5984/web-crawler/doc-test.jpg/content, вы говорите, что файл недействителен? Какой MIME/тип возвращается с сервера?   -  person WiredPrairie    schedule 28.10.2013
comment
Да, содержимое, возвращаемое CouchDB, повреждено. Это не проблема пантомимы/типа.   -  person Lukasz Kujawa    schedule 28.10.2013
comment
Тем не менее, какой mime/type возвращается с сервера? Какой тип контента вы указали во вставке?   -  person WiredPrairie    schedule 28.10.2013


Ответы (1)


Хорошо, этот вопрос можно закрыть. Ответ на мою проблему - Buffer:

db.attachment.insert( id, 'content', new Buffer(self._data, "binary"), contentType, {rev: rev}, function(err, body) { 
        callback();
});
person Lukasz Kujawa    schedule 27.10.2013
comment
Рад, что ты разобрался. Я только что проверил это вручную, и CouchDB правильно возвращал изображения. - person WiredPrairie; 28.10.2013
comment
Работал и для меня. Спасибо. Жаль, что в руководстве по нано нет намека на это... - person Bouncing Bit; 23.02.2017