如何使用隐式执行spring存储库方法进行理解

问题描述 投票:0回答:1

我想从电报api中保存数据,用于具有隐式的理解类型,但是有错误

Error:(61, 9) type mismatch;
 found   : cats.effect.IO[Unit]
 required: scala.concurrent.Future[?]
      _ <- IO(userRepository.save(User(msg.from.get.id, msg.from.get.username.get)))

TelegramBot示例中的代码,它使用info.mukel.telegrambot4s 3.0.9库。

  onCommand("/hello") { implicit msg =>
    for {
      _   <- reply(s"Hello ${msg.from.get.firstName}")
      _ <- IO(userRepository.save(User(msg.from.get.id, msg.from.get.username.get)))
    } yield ()
  }

我试图删除回复并添加,此代码已编译,但保存(内部IO)没有执行

  onCommand("/hello") { implicit msg =>
    for {
      res <- IO(userRepository.save(User(msg.from.get.id, msg.from.get.username.get)))
    } yield res
  }

有可能解决这个问题吗?

scala spring-data-jpa scala-cats cats-effect
1个回答
1
投票

尝试

onCommand("/hello") { implicit msg =>
  for {
    _ <- IO.fromFuture(IO.pure(reply(s"Hello ${msg.from.get.firstName}")))
    _ <- IO(userRepository.save(User(msg.from.get.id, isBot = true, msg.from.get.username.get)))
  } yield ()
}
© www.soinside.com 2019 - 2024. All rights reserved.