2015-11-05 59 views
1

我有一个名为Materials的表。我使用slicks模式自动生成为我创建TableQuery类。如何打印一个光滑查询的结果

我无法弄清楚如何打印简单查询的结果。

Materials.map(_.name) 

我已经试过

val m = Materials.map(_.name).toString() 

println(m) 

并得到结果

Rep(Bind) 

,如果我尝试

Materials.map(_.name).forEach(m => println(m)) 

我得到一个编译错误

value forEach is not a member of slick.lifted.Query[slick.lifted.Rep[Option[String]],Option[String],Seq] 

为了澄清我使用的只是华而不实3.1.0不玩滑头

回答

2

你书写的查询,但需要转换为通过调用其结果的方法,

val query = materials.map(_.name) 
val action = query.result 
val results: Future[ Seq[Option[ String ] ]] = db.run(action) 
results.foreach(println) 

的数据库对象的操作需要根据您正在使用的版本油滑进行初始化。例如SlickPlay Slick

我假设你有这样的

val materials = TableQuery[Materials] 
+0

这给了我一个编译错误说它需要slick.dbio.DBIOAction [序列[字符串],slick.dbio.NoStream,没什么]在分贝.run(action)作为操作 – decapo

+0

我没有val Materials = TableQuery [YourMaterialsTableMapping]。该表被命名为材料,所以我用val材料= TableQuery [材料]。我必须将Future [Seq [String]]更改为Future [Seq [Option [String]]]才能使其工作,但它现在可行。编辑您的答案以包含选项部分,并将其标记为答案。 – decapo

+0

根据您的建议编辑 – nafr

0

可以使用地图评估与副作用功能:

Materials.map(println(_.name))