我正在尝试在数据库中每分钟安排一次随机元素的查询。
计划部分有效,但是我找不到从数据库中选择项目的方法...
我是个敏捷的初学者。也许我错过了一些重要的事情!
如果您需要更多信息,请告诉我
这是我来自boot.swift的代码
import Fluent
import FluentSQLite
func foo(on container: Container) {
let future = container.withPooledConnection(to: .sqlite) { db in
return Future.map(on: container){ }
}
future.do{ msg in
let allQuotes = QuoteOfTheDay.query(on: ).all().wait()
quoteOfTheDay = allQuotes.randomElement()
}.catch{ error in
print("\(error.localizedDescription)")
}
}
/// Called after your application has initialized.
public func boot(_ app: Application) throws {
// your code here
func runRepeatTimer() {
app.eventLoop.scheduleTask(in: TimeAmount.minutes(1), runRepeatTimer)
foo(on: app)
}
runRepeatTimer()
}
答案 0 :(得分:1)
Application
符合Container
,因此您可以在boot(_:)
中调用它,并仅提供应用程序
答案 1 :(得分:0)
根据您的代码,您可以在启动时通过以下方式从数据库中查询项目:
let req = Request(using: app)
let allQuotes = QuoteOfTheDay.query(on: req).all().wait()
quoteOfTheDay = allQuotes.randomElement()
此外,对于每24小时可以执行的重复任务,您可以使用
。 app.eventLoop.scheduleRepeatedTask(initialDelay: TimeAmount.seconds(0), delay: TimeAmount.hours(24), foo(on: app))