scala play reactivemongo java.util.NoSuchElementException:None.get

时间:2015-12-16 01:48:42

标签: scala

当我尝试使用reactive mongo插件更新mongodb文件时,我会抛出异常。任何帮助表示赞赏。谢谢

DiagramDAO.updateDiagram(diagramId,initial.get).onComplete { 
    case Failure(e) =>  Logger.debug("Diagram failed to go to initial state    "+e.printStackTrace())  
    case Success(writeResult) => println(s"successfully updated document with     initial state: $writeResult")
    } 
  

java.util.NoSuchElementException:None.get at   scala.None $ .get(Option.scala:347)at   scala.None $ .get(Option.scala:345)at   play.api.libs.json.JsLookupResult $ class.get(JsLookup.scala:98)at at   play.api.libs.json.JsUndefined.get(JsLookup.scala:127)at at   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32 $$ anonfun $ $申请33 $$ anonfun $ $申请$ 34 $ anonfun $ $申请35 $$ anonfun $ $申请39.apply(jsoncollection.scala:281)     在   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32 $$ anonfun $ $申请33 $$ anonfun $ $申请$ 34 $ anonfun $ $申请35 $$ anonfun $ $申请39.apply(jsoncollection.scala:277)     在play.api.libs.json.JsResult $ class.flatMap(JsResult.scala:107)at at   play.api.libs.json.JsSuccess.flatMap(JsResult.scala:9)at at   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32 $$ anonfun $ $申请33 $$ anonfun $ $申请$ 34 $ anonfun $ $申请35.apply(jsoncollection.scala:277)     在   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32 $$ anonfun $ $申请33 $$ anonfun $ $申请$ 34 $ anonfun $ $申请35.apply(jsoncollection.scala:276)     在play.api.libs.json.JsResult $ class.flatMap(JsResult.scala:107)at at   play.api.libs.json.JsSuccess.flatMap(JsResult.scala:9)at at   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32 $$ anonfun $ $申请33 $$ anonfun $ $申请34申请(jsoncollection.scala:276)     在   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32 $$ anonfun $ $申请33 $$ anonfun $ $申请34申请(jsoncollection.scala:275)     在play.api.libs.json.JsResult $ class.flatMap(JsResult.scala:107)at at   play.api.libs.json.JsSuccess.flatMap(JsResult.scala:9)at at   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32 $$ anonfun $ $申请33.apply(jsoncollection.scala: 275)     在   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32 $$ anonfun $ $申请33.apply(jsoncollection.scala: 274)     在play.api.libs.json.JsResult $ class.flatMap(JsResult.scala:107)at at   play.api.libs.json.JsSuccess.flatMap(JsResult.scala:9)at at   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32.apply(jsoncollection.scala:274)     在   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31 $$ anonfun $ $申请32.apply(jsoncollection.scala:273)     在play.api.libs.json.JsResult $ class.flatMap(JsResult.scala:107)at at   play.api.libs.json.JsSuccess.flatMap(JsResult.scala:9)at at   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31.apply(jsoncollection.scala:273)     在   play.modules.reactivemongo.json.collection.JSONBatchCommands $ $$ LastErrorReader $ anonfun读取$ $$ 7 $ anonfun申请$ 30 $$ anonfun $ $申请31.apply(jsoncollection.scala:272)     在play.api.libs.json.JsResult $ class.flatMap(JsResult.scala:107)at at   play.api.libs.json.JsSuccess.flatMap(JsResult.scala:9)at at   play.modules.reactivemongo.json.collection.JSONBatchCommands $ LastErrorReader $$ anonfun $读取$ 7 $$ anonfun $ $申请30.apply(jsoncollection.scala:272)     在   play.modules.reactivemongo.json.collection.JSONBatchCommands $ LastErrorReader $$ anonfun $读取$ 7 $$ anonfun $ $申请30.apply(jsoncollection.scala:271)     在play.api.libs.json.JsResult $ class.flatMap(JsResult.scala:107)at at   play.api.libs.json.JsSuccess.flatMap(JsResult.scala:9)at at   play.modules.reactivemongo.json.collection.JSONBatchCommands $ LastErrorReader $$ anonfun $读取$ 7.apply(jsoncollection.scala:271)     在   play.modules.reactivemongo.json.collection.JSONBatchCommands $ LastErrorReader $$ anonfun $读取$ 7.apply(jsoncollection.scala:270)     在play.api.libs.json.JsResult $ class.flatMap(JsResult.scala:107)at at   play.api.libs.json.JsSuccess.flatMap(JsResult.scala:9)at at   play.modules.reactivemongo.json.collection.JSONBatchCommands $ LastErrorReader $ .reads(jsoncollection.scala:270)     在   play.modules.reactivemongo.json.JSONSerializationPack $ .deserialize(json.scala:376)     在   play.modules.reactivemongo.json.JSONSerializationPack $ .deserialize(json.scala:350)     在   reactivemongo.api.SerializationPack $ class.readAndDeserialize(serializationpack.scala:24)     在   play.modules.reactivemongo.json.JSONSerializationPack $ .readAndDeserialize(json.scala:350)     在   reactivemongo.api.SerializationPack $ class.readAndDeserialize(serializationpack.scala:32)     在   play.modules.reactivemongo.json.JSONSerializationPack $ .readAndDeserialize(json.scala:350)     在   reactivemongo.api.collections.GenericCollection $$ anonfun $更新$ 1 $$ anonfun $ $申请14.apply(genericcollection.scala:297)     在   reactivemongo.api.collections.GenericCollection $$ anonfun $更新$ 1 $$ anonfun $ $申请14.apply(genericcollection.scala:297)     在scala.util.Success $$ anonfun $ map $ 1.apply(Try.scala:236)at   scala.util.Try $ .apply(Try.scala:191)at   scala.util.Success.map(Try.scala:236)at   scala.concurrent.Future $$ anonfun $ map $ 1.apply(Future.scala:235)at at   scala.concurrent.Future $$ anonfun $ map $ 1.apply(Future.scala:235)at at   scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)at at   scala.concurrent.impl.ExecutionContextImpl $ AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)     在   scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)     在   scala.concurrent.forkjoin.ForkJoinPool $ WorkQueue.runTask(ForkJoinPool.java:1339)     在   scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)     在   scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)   [debug] - 应用程序 - 图表未能进入初始状态()

2 个答案:

答案 0 :(得分:2)

正如你的堆栈所说,你试图获得无价值。尽量避免在Option上使用'get'方法。对于您的情况,您可以使用“地图”:

initial.map(valueOfInitial =>
  DiagramDAO.updateDiagram(diagramId, valueOfInitial).onComplete { 
    ...
  }
)

答案 1 :(得分:1)

Option.get是魔鬼,避免它......这是另一种方式

initial foreach { ival =>
    DiagramDAO.updateDiagram(diagramId,ival).onComplete { 
        case Failure(e) =>  Logger.debug("Diagram failed to go to initial state    "+e.printStackTrace())  
        case Success(writeResult) => println(s"successfully updated document with     initial state: $writeResult")
    }
}