起初我误解了我的问题并发布了这个问题:有人可以解释一下 Ektorp 中的 Cascading 和 FetchType 懒惰吗?
我需要做的:我需要在 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 来调用它,但它只允许我调用 Views。现在我被迫自己管理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);