当我尝试使用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] - 应用程序 - 图表未能进入初始状态()
答案 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")
}
}