正确使用光滑过滤器

时间:2015-05-07 02:22:44

标签: scala slick playframework-2.3

我正在使用光滑访问数据库。我想这样查询:

client.elements(<css selector for your list of elements>, function(err, res) {
    client
         .moveTo(res.value[0].ELEMENT, 0, 0)
         .buttonPress('left')
         .keys('Shift')
         .moveTo(res.value[(res.value.length-1)].ELEMENT, 0, 0)
         .buttonPress('left')
         .keys('NULL'); #This command or `.keys('Shift') will release the `shift` key.
});

我认为这可行。但是,编译器告诉我 错误:(126,-1)播放2编译器:  类型不匹配;   发现:任何   必需:slick.lifted.Rep [?]

问题在于:     shopId.map(s =&gt; c.shopId === s).getOrElse(true)

我想知道如何才能完成这项工作。

我正在使用光滑的3.0.0-RC

2 个答案:

答案 0 :(得分:2)

使用slick.lifted.LiteralColumn(true)

Scala的类型推断限制

答案 1 :(得分:0)

this答案中所述,自Slick 3.3.0起,您可以使用以下API:

def findCouponBy(couponId: Long, shopId: Option[String]) = {
  val query = 
    this
      .filter(_.couponId === couponId)
      .filterOpt(shopId){ case (table, sid) =>
        table.filter(_.shopId === sid)
      }

  db run query.result
}