列出使用java存储在cloudant中的所有附件

列出使用java存储在cloudant中的所有附件,java,ibm-cloud,cloudant,Java,Ibm Cloud,Cloudant,我正在开发一个演示,我一直在做这个。 我想在java web应用程序中列出所有附件(例如PDF),但a我无法检索并列出它们。 我只能检索公共数据(字符串、整数)。 是否有标准的检索和显示方法? 我一直在看所有的帖子,但似乎什么都不管用 这里是我添加供应商的地方,带有附件: 在这里,我尝试检索数据: public List<Vendor> getAllVendors() { List<Vendor> Vendors = new ArrayList&l

我正在开发一个演示,我一直在做这个。 我想在java web应用程序中列出所有附件(例如PDF),但a我无法检索并列出它们。 我只能检索公共数据(字符串、整数)。 是否有标准的检索和显示方法? 我一直在看所有的帖子,但似乎什么都不管用

这里是我添加供应商的地方,带有附件: 在这里,我尝试检索数据:

public List<Vendor> getAllVendors()
    {
        List<Vendor> Vendors = new ArrayList<Vendor>();
        final List<Vendor> vend2 = new ArrayList<Vendor>();

        //Get db
        final Database db = getDb();
        final InputStream s = null;
        //Get all documents
        Vendors = db.view("_all_docs").includeDocs(true).query(Vendor.class);

        final Database db1 = getDb();

          for (final Vendor vend : Vendors) { 

          final Response r1 = vend.getAttachment(); 

          final int id = Integer.valueOf(vend.get_id()) + 1;

         // Here I am look to the attachment with the _ID and _REV
          final InputStream in = db1.find(r1.getId(), r1.getRev()); vend.setInput(in); vend2.add(vend);

           }

        return Vendors;
    }
公共列表getAllVendors() { 列出供应商=新的ArrayList(); 最终列表vend2=新的ArrayList(); //获取数据库 最终数据库db=getDb(); 最终输入流s=null; //获取所有文档 Vendors=db.view(“\u all\u docs”).includeDocs(true).query(Vendor.class); 最终数据库db1=getDb(); 对于(最终供应商:供应商){ 最终响应r1=vend.getAttachment(); final int id=Integer.valueOf(vend.get_id())+1; //我在这里查看带有_ID和_REV的附件 final InputStream in=db1.find(r1.getId(),r1.getRev());vend.setInput(in);vend2.add(vend); } 退货供应商; } 在这最后一段代码中,我打算创建一个包含所有供应商数据和blob的新列表。
当我添加供应商(在第一部分中)时,我将附件的“响应”保存在供应商对象中,因此当我尝试检索时,我有了要处理的数据(_id和_rev)

我假设您希望列出包含附件的所有文档。如果是这样,您可以类似于此:

function(doc) {
  if (doc._attachments) {
    emit(doc._id, null);
  }
}
然后,您可以使用类似以下内容调用视图,以获取包含附件的文档的文档ID列表:

GET /dbname/_design/designdocname/_view/docswithattachments
上面的GET请求在Java中看起来像这样:

  List<Foo> list = db.view("designdocname/docswithattachments")
    .query(Foo.class);
List List=db.view(“设计文档名/docswithattachments”)
.query(Foo.class);

我假设您希望列出包含附件的所有文档。如果是这样,您可以类似于此:

function(doc) {
  if (doc._attachments) {
    emit(doc._id, null);
  }
}
然后,您可以使用类似以下内容调用视图,以获取包含附件的文档的文档ID列表:

GET /dbname/_design/designdocname/_view/docswithattachments
上面的GET请求在Java中看起来像这样:

  List<Foo> list = db.view("designdocname/docswithattachments")
    .query(Foo.class);
List List=db.view(“设计文档名/docswithattachments”)
.query(Foo.class);

请发布一些代码来说明您是如何尝试这样做的。@我刚刚发布了部分DAO实现代码。我当然知道这不是最好的持久化方法,但经过一周的尝试,它就是这样的:请发布一些代码来说明您是如何尝试做到这一点的。@AndyTurner我刚刚发布了部分DAO实现代码。我知道这肯定不是最好的持久化方法,但经过一周的尝试,它是什么:DHi Chris,我在cloudant帮助中看到了这条说明,但我不知道如何创建方法。我的意思是,获取或放置我必须导入的库?您是否能够按照上面的示例向cloudant数据库添加MapReduce视图?我还为HTTPGET示例提供了一个java代码段。谢谢Chris,这是正确的方法。大家好,Chris,我在cloudant帮助中看到了这条说明,但我不知道如何创建方法。我的意思是,获取或放置我必须导入的库?您是否能够按照上面的示例向cloudant数据库添加MapReduce视图?我还为HTTPGET示例提供了一个java代码段。谢谢Chris,这是正确的方法。我会在这上面多挖一点。