使用 nano 从视图中读取数据

Que*_*ins 3 couchdb view node.js couchdb-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);
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

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

感谢您的任何帮助!

Ale*_*ôté 6

首先,我建议您查看nano 文档,其中详细介绍了您需要了解的有关 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);
    });
  }
});
Run Code Online (Sandbox Code Playgroud)

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

Designname 是不带_design/前缀的设计文档 ID 。就您而言,它是 custdoc。

Viewname 是您要查询的视图的名称。在你的例子中,它是customersView。

如果有不清楚的地方欢迎评论!欢迎来到 CouchDB 社区 :)

  • 亚历克西斯,非常感谢你!我对设计名称真的很困惑。现在可以了。我需要找出如何获取文档值,但我会查看文档。再次感谢你! (2认同)