我想在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
答案 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
作为您正在寻找的电子邮件/登录名的查询