3

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

_list/characters/characters_by_user?startkey=["org.couchdb.user:rodriguez"]&endkey=["org.couchdb.user:rodriguez", {}]

我正在尝试重写 URL,以便您可以以更友好的方式访问它...

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

4

1 回答 1

0

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

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

var user = doc.createdBy.split(":")[1];
emit(user, doc);
于 2012-04-17T20:47:42.143 回答