Scala: метод публикации не работает со списком - PullRequest
0 голосов
/ 05 августа 2020

Мой основной почтовый вызов, который принимает список идентификаторов

} ~ (post & pathPrefix("all")) {
              authorize(user.admin.getOrElse(false)) {
                entity(as[List[String]]) { ids =>
                  complete(getAllUsers(ids))
                }
              }
            } 

Мой JDB C класс для указанного выше

 override def getAllUsers(ids: List[String]): Future[Iterable[User]] = Future {
    val u = UserWrapper.syntax
    val n = NotificationChannelWrapper.syntax
    withSQL {
      select.from(UserWrapper as u)
        .leftJoin(NotificationChannelWrapper as n)
        .on(u.id, n.field("userId"))
        .where.in(u.id, ids)
    }.one(UserWrapper(u.resultName)(_))
      .toMany(NotificationChannelWrapper.opt(n)(_))
      .map { (user, channels) => user.copy(notificationChannels = channels.toSet) }
      .fetchSize(1000)
      .list().apply()
  }

Когда я передаю список умноженных идентификаторов, он выиграл ' t take Кто-нибудь может подсказать, в чем ошибка.

Получение ошибки введите описание изображения здесь

1 Ответ

2 голосов
/ 05 августа 2020

Попробуйте передать тело без полей «id», просто передав список строк, например:

["first str", "second str"] 

или, если требуется использовать формат {"id": "..."}, вам нужно создать или использовать существующий класс case, например :

case class Foo(id: String)

с конвертером для него из Json и принять сущность типа List[Foo] вместо List[String]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...