我有一个可以像这样访问的列表函数:
_list/characters/characters_by_user?startkey=["org.couchdb.user:rodriguez"]&endkey=["org.couchdb.user:rodriguez", {}]
我正在尝试重写网址,以便您可以更友好地访问它...
/rodriguez/characters
......写下这条规则:
{from: '/:user/characters', to: '_list/characters/characters_by_user',
query: {
startkey: "[%22org.couchdb.user%3A:user%22]",
endkey: "[%22org.couchdb.user%3A:user%22,%20{}]"
}
}
然而,我收到此错误:
error: "query_parse_error",
reason: "No rows can match your key range, reverse your start_key and end_key or set descending=true"
为什么查询在完整的URL中正常工作,但没有使用重写?
更新
我认为这可能是CouchDB处理编码冒号(%3A)的方式的错误。我正在等待邮件列表的回复,并会相应地更新此问题。
答案 0 :(得分:0)
我发现检查CouchDB的日志被证明是解决URL重写方式的最佳方法。不幸的是,我提交给CouchDB邮件列表的问题尚未得到回复。
作为一种解决方法,我在没有完全符合条件的情况下发出了用户名,这符合我的目的:
var user = doc.createdBy.split(":")[1];
emit(user, doc);