我一直在mongodb上使用RESTHeart来支持Mongodb的REST界面。当我没有使用任何过滤器时它工作正常,但是当我尝试使用documentation中提供的HTTP GET请求应用过滤器时,我得到了下面提供的堆栈跟踪错误。
请求:http://127.0.0.1:8080/inBeta/donor?filter="{'name':'john'}"
14:15:49.373 [XNIO-1 task-1] ERROR c.s.restheart.handlers.ErrorHandler - 处理请求的错误java.lang.ClassCastException:java.lang.String无法强制转换为org.bson.BSONObject at com.softinstigate.restheart.db.CollectionDAO.lambda $ getCollectionData $ 45(CollectionDAO.java:178) 〜[restheart.jar:0.9.7] at com.softinstigate.restheart.db.CollectionDAO $$ Lambda $ 20 / 1288164368.accept(Unknown 来源)〜[na:na] 在java.util.ArrayDeque $ DeqSpliterator.forEachRemaining(未知 源)〜[NA:1.8.0_31] at java.util.stream.ReferencePipeline $ Head.forEach(Unknown Source)〜[na:1.8.0_31] at com.softinstigate.restheart.db.CollectionDAO.getCollectionData(CollectionDAO.java:177) 〜[restheart.jar:0.9.7]
当我没有应用任何过滤器返回JSON对象时,但是过滤器返回的BSON对象,RESTHeart无法将其转换为JSON响应。将不胜感激任何帮助或方向来研究这个问题。
P.S。 RESTHeart没有标记,因此如果有人可以为其创建标记会很有帮助。
答案 0 :(得分:1)
最后,问题解决了:)
我尝试使用文档中提供的其他API,发现除了过滤器之外一切正常,因此使用以下请求尝试请求:
http://127.0.0.1:8080/inBeta/donor?filter=%7B'username':'john'%7D
它奏效了。因此,罪魁祸首是双引号围绕过滤器查询。