gpt4 book ai didi

java - 如何在没有某些字段的情况下从 couchdb 获取文档?尽可能使用 Ektorp

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:29 25 4
gpt4 key购买 nike

起初我误解了我的问题并发布了这个问题:Can someone explain me Cascading and FetchType lazy in Ektorp?

我需要做什么:我需要在 couchdb 中保存一个实体,然后有办法读取它并可能忽略一些字段。所以我想到了这个解决方案:我创建了一个显示函数,它从对象中删除字段,然后将其发回。

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 来调用它,但它只允许我调用 View 。现在我不得不自己管理 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);

最佳答案

从 CouchDB 的角度来看,show 函数并不是一个糟糕的主意。 Ektorp 可能不支持它们,大概是因为它们没有被广泛使用,但是 Ektorp 的开源和 Github 上;您可以轻松地添加此功能,特别是因为您已经具备了它的有效实现的基础知识。

或者,您可以只构建一个针对给定字段集执行此操作的 View 。不过,您无法真正对其进行参数化,因此您需要预先知道定义明确的字段集。

最后,我建议要么提取整个文档而不用担心它(除非您处于带宽极度受限的情况下,这可能无关紧要),或者将文档拆分为您需要的组成部分独立查询和请求它们,如果这绝对是不寻常的情况。

关于java - 如何在没有某些字段的情况下从 couchdb 获取文档?尽可能使用 Ektorp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15976886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com