【问题标题】:slick saving multiple objects巧妙地保存多个对象
【发布时间】:2019-04-27 03:17:21
【问题描述】:

嘿,我有一个 react 应用程序,它可以向我的 api 发送订单,例如

[
    {
        "product_id":13,
        "quantity":2
    },
    {
        "product_id":12,
        "quantity":2
    }
]

我想用它做的是,将 json 解析为 Seq[Product] 我的问题就从这里开始了,我不知道用 slick 保存 Seq。

def createMany(productList: Seq[Product]): Future[Seq[Int]] = db.run {
    for {
      p <- productList
    } yield products += p
  }

其中 products 是一个 TableQuery[Product], 正在考虑这样的事情,但我得到了

Type mismatch, expected: DBIOAction[NotInferedR, NoStream, Nothing], actual: Seq[JdbcProfile.this.ProfileAction[Int, NoStream, Effect.Write]]

我试图返回的是我刚刚插入的产品 ID 列表

【问题讨论】:

  • 您能分享一下您使用的 slick 版本是什么吗?另外,我认为当您运行 db.run{...} 时,它会返回 Seq[Future[Int]]。如果要添加批次产品,则需要使用 ++= 而不是 +=。

标签: json scala rest slick


【解决方案1】:

tomcy 是对的,你需要在插入 Seq 时使用++= 而不是+=。此外,如果您希望在插入后返回 ID,您可以尝试:

products returning products.map(_.id) ++= productList

【讨论】:

    猜你喜欢
    • 2016-05-30
    • 2012-04-24
    • 1970-01-01
    • 2023-02-10
    • 2018-10-23
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多