Lightcouch 如何检查设计文档是否存在?

因此,我正在尝试使用 contains 检查我的数据库中是否存在设计文档。


if (!dbClient.contains("_design/myDesignDoc")) {

//Do stuff

}

但是我得到一个 java.lang.IllegalArgumentException: Entity may not be null 错误,因为 id 中有 _design 的下划线。


java.lang.IllegalArgumentException: Entity may not be null

    at org.apache.http.util.Args.notNull(Args.java:54) ~[httpcore-4.4.11.jar:4.4.11]

    at org.apache.http.util.EntityUtils.toString(EntityUtils.java:307) ~[httpcore-4.4.11.jar:4.4.11]

    at org.lightcouch.CouchDbClientBase.validate(CouchDbClientBase.java:659) ~[lightcouch-0.2.0.jar:na]

    at org.lightcouch.CouchDbClient$3.process(CouchDbClient.java:223) ~[lightcouch-0.2.0.jar:na]

    at org.apache.http.protocol.ImmutableHttpProcessor.process(ImmutableHttpProcessor.java:142) ~[httpcore-4.4.11.jar:4.4.11]

    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:191) ~[httpclient-4.5.9.jar:4.5.9]

    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.9.jar:4.5.9]

    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.9.jar:4.5.9]

    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.9.jar:4.5.9]

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) ~[httpclient-4.5.9.jar:4.5.9]

    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.9.jar:4.5.9]

    at org.lightcouch.CouchDbClientBase.executeRequest(CouchDbClientBase.java:480) ~[lightcouch-0.2.0.jar:na]

    at org.lightcouch.CouchDbClientBase.head(CouchDbClientBase.java:566) ~[lightcouch-0.2.0.jar:na]

我曾经能够做到这一点,但我根本不记得我做了什么。如何查看设计文档是否存在?


温温酱
浏览 123回答 2
2回答

森林海

也许我的建议非常明显,GET 或 HEAD 应该在检索时回答 HTTP 状态代码:curl -X HEAD 'http://localhost:5984/your_db/_design/your_design_doc'只需要弄清楚哪个 LightCouch API 方法将执行类似的调用。

慕丝7291255

好的,虽然我找不到用于 HEAD 的 LightCouch API,但我最终做的是使用这个JsonObject result = null;String uri = dbClient.getDBUri() + "_design/myDesignDoc"; try {            result = dbClient.findAny(JsonObject.class, uri);        } catch (Exception e) {            throw new CustomException("Design document could not be found");        } finally {            if (result == null) {                file = new ClassPathResource("json/designDocData.json").getFile();                reader = new JsonReader(new FileReader(file));                data = gson.fromJson(reader, JsonObject.class);                dbClient.save(data);            }dbClient.findAny 似乎能够检索 .contains 和 .find 失败的设计文档。我希望我不必检索文档来查看它是否存在并且可以只使用包含,但这是我现在唯一的工作方法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java