blob: 75f8fed1cef85297a7db3dda38c19d3e90d2cd07 [file] [log] [blame]
'use strict';
import { btoa, readAsBinaryString } from 'pouchdb-binary-utils';
import { DOC_STORE, openTransactionSafely } from './util';
export default function (db, docId, attachId, opts, cb) {
var openTxn = openTransactionSafely(db, [DOC_STORE], 'readonly');
if (openTxn.error) {
return cb(openTxn.error);
}
var attachment;
openTxn.txn.objectStore(DOC_STORE).get(docId).onsuccess = function (e) {
var doc = e.target.result;
var rev = opts.rev ? doc.revs[opts.rev].data : doc.data;
var digest = rev._attachments[attachId].digest;
attachment = doc.attachments[digest].data;
};
openTxn.txn.oncomplete = function () {
if (opts.binary) {
cb(null, attachment);
} else {
readAsBinaryString(attachment, function (binString) {
cb(null, btoa(binString));
});
}
};
openTxn.txn.onabort = cb;
}