如何根据变量列出文档?

时间:2018-03-23 11:23:18

标签: couchdb

我的用例是:

  • 用户填写表单,用于创建存储用户名的doc。
  • 他转到某个网址,它应该列出他创建的所有文档。

通过谷歌搜索和阅读文档我已经有了简单的设计文档和视图工作,但我不知道如何给它一个变量和基于它的过滤器(在这种情况下,用户名)。
我已经看过过滤器功能并在我的视图中写了这个,但它似乎并没有适应我想要做的事情(并且无论如何还没有工作,空白结果):

function (doc, req) {
  if (doc.author && doc.author === req.query.author) {
    return true;
  }
  return false;
}

我无法在线找到解决方案,因为所有网站都只关注超简单的静态示例,并完全避免这种情况。

我最接近解决方案的是每个用户拥有一个数据库,但我的应用程序还应该有一个管理视图,其中列出了每个用户的文档并与之交互。

1 个答案:

答案 0 :(得分:2)

您无法提供观点变量。

将视图视为数据库索引:它们是基于在您的每个记录和emits()事物上运行的一大块JS的文档中静态生成的索引。

您的示例代码看起来更像是过滤器而不是视图。您绝对应该从头到尾阅读视图指南:http://docs.couchdb.org/en/2.1.1/ddocs/views/intro.html

但基本上你正在寻找的是这样的:

function(doc) {
    emit(doc.where.the.author.name.is);
}

然后,当您查询视图时,您将作者的姓名作为视图的关键字传递:

yourdb/_design/yourddoc/_view/yourview?key=authorname

这只是一个例子,阅读上面的链接,因为视图是CouchDB的核心概念,值得理解。