Проверка на ноль в плоской карте - PullRequest
1 голос
/ 26 июня 2019

У меня есть запрос Neo4J, который возвращает список узлов, которые, скорее всего, не будут пустыми, но в некоторых случаях может возвращать ноль. Как я могу проверить нулевой результат на карте или плоской операции?

 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 Ответ

3 голосов
/ 26 июня 2019

Попробуйте 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 s отбрасывается flatMap.

...