【问题标题】:Reading data from view using nano使用 nano 从视图中读取数据
【发布时间】:2019-05-23 14:28:12
【问题描述】:

我是 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);
    });
  }
});

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

感谢您的帮助!

【问题讨论】:

    标签: node.js view couchdb couchdb-nano


    【解决方案1】:

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

    _design/custdoc/_view/customersView只有在您直接查询 CouchDB 的 HTTP API 时才有效。使用 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 社区 :)

    【讨论】:

    • 亚历克西斯,非常感谢!我真的对设计名称感到困惑。现在它起作用了。我需要了解如何获取文档值,但我会看一下文档。再次感谢您!
    • 如何接受您的回答?我正在寻找类似按钮的东西来做到这一点,但我仍然没有找到它。我当然想这样做,你很好!
    • 要接受答案,您通常有一个检查,点击右下角的票数。投票定义在答案的左侧,如果您觉得有用,可以投票或反对。
    • 非常感谢。我盯着屏幕看了好几分钟,试图找出问题所在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2013-12-16
    • 2014-03-14
    • 2015-10-10
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多