最初、私は自分の問題を誤解して、この質問を投稿しました: Ektorp で Cascading と FetchType lazy について説明してもらえますか?
私がしなければならないこと: Entityをcouchdbに保存してから、それを読み取って一部のフィールドを潜在的に無視する方法を用意する必要があります。そこで、この解決策を思いつきました。オブジェクトからフィールドを削除してから送り返す show 関数を作成します。
function(doc, req) {
var result = doc;
var ignore = JSON.parse(decodeURIComponent(req.query.ignore)); //this is an array of field names
for (var i = 0, j = ignore.length; i < j; i++) {
if (result[ignore[i]]) {
delete result[ignore[i]];
}
}
return {
body : JSON.stringify(result),
headers : {
"Content-Type" : "application/json"
}
};
}
私は同じ機能を持っていますが、オブジェクトが保持するように関数に指示したフィールドを逆にしています。
これを行うより良い方法はありますか?
また、Ektorp を使用してこれを呼び出したいのですが、ビューしか呼び出せません。現在、http リクエストを自分で管理する必要があります。これを回避する方法はありますか?
今はこれが私が使わなければならないコードですが、Ektorp を使ってこれを行いたいと思っています。
HttpClient httpClient = new StdHttpClient.Builder().url("http://localhost:5984").build();
CouchDbInstance dbInstance = new StdCouchDbInstance(httpClient);
CouchDbConnector db = new StdCouchDbConnector("mydatabase", dbInstance);
db.createDatabaseIfNotExists();
String[] forget = new String[] { "field_to_ignore" };
String uri = "/mydatabase/_design/mydesigndoc/_show/ignorefields/mydocid?ignore=" + URLEncoder.encode(Json.stringify(Json.toJson(forget)), "UTF-8");
System.out.println(uri);
HttpResponse r = db.getConnection().get(uri);
String stuff = new Scanner(r.getContent()).useDelimiter("\\A").next();
System.out.println(stuff);