在平面图中检查null

时间:2019-06-26 11:29:08

标签: scala scope null

我有一个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]]

任何帮助都会很棒!

1 个答案:

答案 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,并且NoneflatMap丢弃了。