Гладкое сохранение нескольких объектов

эй, у меня есть приложение для реагирования, которое отправляет заказ на мой api, например

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

и что я хотел бы с ним сделать, разобрать этот json на Seq [Product] и здесь начинается моя проблема, я не знаю, как сохранить этот Seq с помощью slick.

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]]

Я пытаюсь вернуть список идентификаторов товаров, которые я только что вставил.

не могли бы вы рассказать, какую версию slick вы используете? Кроме того, я думаю, что когда вы запустите db.run {...} this, он вернет вам Seq [Future [Int]]. Если вы хотите добавить партию Продукта, вам нужно использовать ++ = вместо + =.

tomcy 26.11.2018 07:35
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
1
80
1

Ответы 1

Tomcy прав в том, что вам нужно использовать ++= вместо += при вставке Seq. Также, если вы хотите вернуть идентификаторы после вставки, вы можете попробовать:

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

Другие вопросы по теме