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 に答える