Couchdb 视图中的访问键参数

Couchdb 视图中的访问键参数,couchdb,Couchdb,我想在couchdb中创建一个动态视图,我想问一下如何在coach视图中访问参数key。 例如: function(doc) { if ((doc['couchrest-type'] == 'User') && ((doc['email'] != null) || (doc['login'] != null ))) { if (doc['email'] == parameter[key]) { emit(doc['email'],

我想在couchdb中创建一个动态视图,我想问一下如何在coach视图中访问参数key。 例如:

function(doc) {
    if ((doc['couchrest-type'] == 'User') && ((doc['email'] != null) || (doc['login'] != null ))) {
        if (doc['email'] == parameter[key]) {
            emit(doc['email'], doc);
        } else if (doc['login'] == parameter[key]) {
            emit(doc['login'], doc);
        }
    }
}
couchdb中动态视图的缺点是什么。 以及如何在Couchrest模型中添加这样的动态视图

谢谢,
Shenouda Bertel

不能在CouchDB中创建动态视图。您可以使用临时视图(请参见的底部)来执行此处尝试执行的操作,但众所周知,临时视图必须运行整个数据库来计算结果,因此您的性能将非常糟糕,并且每个CouchDB资源都建议您不要这样做

视图对于回答诸如“哪些数据与此值匹配?”或“给我按此值排序的数据”之类的问题非常有用。它们为此进行了优化,因为map和reduce函数不依赖于查询参数,因此可以缓存和增量更新它们

您试图做的是“什么数据和这个值匹配?”之类的,所以可以使用静态的、永久的视图来完成:

function(doc) {
    if (doc.type == 'User') {
        if (doc.email) emit(doc.email, null);
        if (doc.login) emit(doc.login, null);
    }
}
此视图允许您查询电子邮件或登录名等于某个值的任何文档,因此您只需使用
key
作为您要查找的电子邮件/登录名运行查询即可