我一直在客户端使用Databinder Dispatch库来创建一个简单的REST-ish API.我知道如何检测我是否收到错误状态的HTTP响应:
Http x (request) {
case (200, _, _, content) => successResult(content())
case (404, _, _, _) => notFoundErrorResult
case (_, _, _, _) => genericErrorResult
}
Run Code Online (Sandbox Code Playgroud)
但是,由于域无效或连接失败,我如何区分错误响应和完全没有响应的错误?有没有办法在仍然使用同步语义的同时实现超时?如果API中有任何相关内容,我就错过了.
我有一些代码检查Mongo集合中的每个对象(迭代不带参数的find()的结果),并对其中的一些进行更改.看起来这不安全:我的更改被保存,但是当我继续迭代光标时,更改对象的子集(10-15%)会再次出现.我没有更改文档ID或任何有索引的内容.
我想通过提前抓取所有文档ID(将光标转换为数组)来避免这个问题,但这些是大型集合,所以我真的想避免这种情况.
我注意到默认情况下find()的结果似乎没有任何已定义的顺序,所以我尝试对游标进行显式排序,{"_ id":1}.这似乎解决了这个问题 - 无论我修改什么,现在都没有出现过两次.但我不知道这是不是一个好的/可靠的方法.据我从文档中可以看出,添加排序并不会使其预先查询所有ID; 如果是这样,那很好,但后来我不知道为什么它会解决这个问题.
改变东西时使用游标是一个坏主意吗?
我正在使用Scala/Casbah,如果这很重要的话.