访问视图中的关键参数

时间:2010-09-28 08:18:44

标签: couchdb

我想在couchdb中创建一个动态视图,我想问一下如何在沙发视图中访问参数键。 如下:

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

1 个答案:

答案 0 :(得分:2)

您无法在CouchDB中创建动态视图。您可以使用临时视图(请参阅this page的底部)来执行您在此处尝试执行的操作,但是临时视图因此必须在整个数据库中运行以计算结果,因此你将拥有绝对可怕的性能,而且每一个CouchDB资源都会提供相应的建议。

视图可用于回答诸如“哪些数据与此值匹配?”之类的问题。或“给我按此值排序的数据”。它们已经过优化,因为map和reduce函数不依赖于查询参数,因此可以缓存它们并逐步更新它们。

您要做的是“哪些数据符合此值?”善意,因此可以通过静态的永久性观点来完成:

function(doc) {
    if (doc.type == 'User') {
        if (doc.email) emit(doc.email, null);
        if (doc.login) emit(doc.login, null);
    }
}

此视图允许您查询具有等于特定值的电子邮件或登录名的任何文档,因此您只需运行key作为您正在寻找的电子邮件/登录名的查询