使用 nano 从视图中读取数据

Reading data from view using nano

我是 node.js 和 couchdb 的新手,所以我一直在研究和执行一些代码测试以尝试了解它们的工作原理。

我正在使用 nano 包来处理 node.js 中的 couchDB。我能够连接到数据库并向其中插入数据。但是我一直在努力了解如何查询数据。

我阅读了有关 couchDB 中的视图的文档,从那时起我一直在尝试从创建的名为 customersView(数据库名称为 testsqueila)的视图中检索数据。

视图的设计名称是“_design/custdoc/_view/customersView”。我要实现的功能如下:

testsqueila.view('_design/custdoc/_view/customersView', 'customersView', function(err, body) {
  if (!err) {
    body.rows.forEach(function(doc) {
        console.log(doc.value);
    });
  }
});

发生了一些错误,因为控制台中没有打印任何内容。我不确定我是否以错误的方式或其他方式使用了视图的设计名称。有谁知道发生了什么事?我还添加了一些代码来获取错误值,并在控制台消息的末尾显示:errid: 'non_200' description: 'couch db returned 404'.

感谢您的帮助!

首先,我建议您看一下 nano documentation,其中详细介绍了您需要了解的有关 API 调用的所有信息。

仅当您直接查询 CouchDB 的 HTTP API 时,_design/custdoc/_view/customersView 才有效。使用 nanodb,您需要执行以下操作:

testsqueila.view('custdoc', 'customersView', function(err, body) {
  if (!err) {
    body.rows.forEach(function(doc) {
      console.log(doc.value);
    });
  }
});

所以 .view() 签名看起来像这样:db.view(designname, viewname, [params], [callback])

Designname 是没有 _design/ 前缀的设计文档 ID。在您的情况下,它是 custdoc。

Viewname 是您要查询的视图的名称。在您的情况下,它是 customersView。

如有不明白的地方欢迎留言!欢迎来到 CouchDB 社区 :)