如何在URL重写中使用CouchDB用户名?

时间:2012-04-06 03:28:44

标签: url-rewriting nosql couchdb rewrite

我有一个可以像这样访问的列表函数:

_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)的方式的错误。我正在等待邮件列表的回复,并会相应地更新此问题。

1 个答案:

答案 0 :(得分:0)

我发现检查CouchDB的日志被证明是解决URL重写方式的最佳方法。不幸的是,我提交给CouchDB邮件列表的问题尚未得到回复。

作为一种解决方法,我在没有完全符合条件的情况下发出了用户名,这符合我的目的:

var user = doc.createdBy.split(":")[1];
emit(user, doc);