获取PouchDB附件?

时间:2017-05-23 19:42:39

标签: javascript html database pouchdb

我正在尝试创建一个可以提问并回答问题的网站。为了做到这一点,我有两个文件,一个用于将问题发送到数据库,另一个用于输出问题所在的每个docs的附件。

Post.js:

db.post({
    title: 'question'
}).then(function (response) {
    console.log(response)
    q = response
}).catch(function (err) {
    console.log(err);
});

await sleep(100)
console.log(q.rev)

var attachment = new Blob([{
    "title" : title,
    "content" : content,
    "option" : option,
    "spec" : spécialisation,
    "year" : year,
    "date" : date}, {type: 'text/json'}]);
db.putAttachment(q.id.toString(),'qData', q.rev.toString(), attachment, 'text/json')
.then(function (result) {
    console.log(result)
})
.catch(function (err) {
    console.log(err);
});

并且view.js:

var all = db.allDocs({
}).then(function (result) {
    console.log(JSON.stringify(result.rows))
    return result.rows
}).catch(function (err) {
    console.log(err);
});

但是我无法让它工作,它没有输出任何错误,我收到的单个输出是一个没有任何附件的文档。 什么是我(可能是新手)的错误?

1 个答案:

答案 0 :(得分:2)

尝试在allDocs电话中添加以下选项:

{
  include_docs: true,
  attachments: true
}

在这两个选项上引用docs

  

options.include_docs:将文档本身包含在每行中   doc领域。否则,默认情况下,您只能获得_id和_rev   属性。

     

options.attachments:将附件数据包含为base64编码的字符串。

文档有一个完整的示例,它应该将您的附件作为base64字符串返回:

db.allDocs({
  include_docs: true,
  attachments: true
}).then(function (result) {
  // handle result
}).catch(function (err) {
  console.log(err);
});

注意:我看到你使用Blob。如果您希望将附件作为Blob而不是base64字符串,请查看此选项:

  

options.binary:将附件数据作为Blobs / Buffers返回,而不是   base64编码的字符串。