Slick 3.1.x方法returns空列表
Slick 3.1.x method returns empty list
此方法使用 Slick 3.1.x,它 returns 正确地是一个 Future[List[Analysis]]
类型的对象,但列表始终为空。为什么会这样以及如何解决这个问题?
def readMany = {
val db = Database.forConfig("db1")
var list = new ListBuffer[Analysis]()
try {
val query = TableQuery[AnalysisDB]
val action = query.sortBy(_.name).result
val future = db.run(action).map(_.foreach {
case (analysis) => list += Analysis ( analysis.sk, analysis.name )
})
Future { list.toList }
} finally db.close
}
列表在填充之前返回。您的 val future
(数据库调用)正在 ignored/discarded,并且返回 Future(list)
(仍然是空的)。试试这个;
def readMany = {
val db = Database.forConfig("db1")
try {
val query = TableQuery[AnalysisDB]
val action = query.sortBy(_.name).result
db.run(action).map(_.map {
a => Analysis(a.sk, a.name)
})
} finally db.close
}
这也避免了臭味可变的 ListBuffer。
此方法使用 Slick 3.1.x,它 returns 正确地是一个 Future[List[Analysis]]
类型的对象,但列表始终为空。为什么会这样以及如何解决这个问题?
def readMany = {
val db = Database.forConfig("db1")
var list = new ListBuffer[Analysis]()
try {
val query = TableQuery[AnalysisDB]
val action = query.sortBy(_.name).result
val future = db.run(action).map(_.foreach {
case (analysis) => list += Analysis ( analysis.sk, analysis.name )
})
Future { list.toList }
} finally db.close
}
列表在填充之前返回。您的 val future
(数据库调用)正在 ignored/discarded,并且返回 Future(list)
(仍然是空的)。试试这个;
def readMany = {
val db = Database.forConfig("db1")
try {
val query = TableQuery[AnalysisDB]
val action = query.sortBy(_.name).result
db.run(action).map(_.map {
a => Analysis(a.sk, a.name)
})
} finally db.close
}
这也避免了臭味可变的 ListBuffer。