我有一个Neo4J查询,该查询返回一个很可能不会为空的节点列表,但在某些情况下可能返回null。如何在地图或平面图操作中检查空结果?
val nodes = {
storeAPI.NeoQuery(parentNodesIDs).resultList().map {
_.flatMap {
record =>
record.get("assetList").asList.asScala.map(_.toString).toSet
}
}.recover {
case e: Exception =>
logger.error(s"Failure in getSimplifiedAssetListFromContainer: ", e)
throw e
}
}
我尝试将storeAPI.NeoQuery(parentNodeIDs).resultList()
放入上述代码块之外的val
中,但随后val nodes
超出了范围。
val nodes = {...}
的类型为Future[List[String]]
任何帮助都会很棒!
答案 0 :(得分:3)
像这样尝试flatMap(Option(_))
record
.get("assetList")
.asList
.asScala
.flatMap(Option(_))
.map(_.toString)
.toSet
例如
List(1,null,3).flatMap(Option(_)).map(_.toString).foreach(println)
输出
1
3
之所以可行,是因为Option(null)
是None
,并且None
被flatMap
丢弃了。