从附件PouchDB

时间:2016-02-01 22:45:50

标签: javascript promise couchdb attachment pouchdb

我正在尝试使用CouchDB和PouchDB创建一个网页。一开始我创建了一个CouchDB数据库('图像')。在此数据库中是一个包含多个附件的文档,所有图像(.png)。我能够将CouchDB数据库与PouchDB同步。现在我想使用存储在PouchDB中的附件。

我使用db.get语句来获取附件。

db.get('image', {attachments: true}).then(function (doc) {
        console.log(doc);
});

现在我想获得不同的图像因为我需要它们作为src在不同的地方。目前我正在使用:

    db.getAttachment('image', 'image1.png').then(function (blob) {
      var url = URL.createObjectURL(blob);
      console.log('URL image1 created');
    }).catch(function (err) {
        console.log('URL image1 not created');
        console.log(err);
    });

问题是我不知道如何访问创建的网址。我想我必须使用return并使用全局变量。但是我不知道在这种情况下如何做到这一点。

我使用了以下guide,但正如我所说,我想在代码中的其他地方使用url。

1 个答案:

答案 0 :(得分:0)

部分解决方案

问题似乎是在img标签尝试访问URL后生成了URL。这意味着即使您正在使用全局变量,您也会收到错误。因此,我改变了顺序。

现在,在生成URL后更新src。问题仍然是,如果您使用多个附件,它有点复杂并且没有什么用。我仍然希望获得该URL以便进一步使用。

  <body>

     <img id ="test"  alt="Image from DB" style="width:304px;height:228px;">

  <script>

    var url = " ";

    var imageFW = db.getAttachment('image', 'image1.png');

    imageFW.then(function (blob) {
      url = URL.createObjectURL(blob); 
      document.getElementById("test").src = url;
    }).catch(function (err) {
      console.log(err);
    });

  </script>

更新: 最后,我解决了使用诺言的问题