我有一个问题,首先使用叶子中的标签对新日期进行排序,蒸汽。从 MySQL 数据库中,当我在 routes.swift 中使用“get”并完美地在网页上以 HTML 显示日期和时间时,它会显示日期和时间,但最后会显示新条目。我的每个实体日期和时间都从 MySQL 成功获取,但在叶子中使用 #loop 后,新用户实体最后出现。有没有什么办法可以先 #loop 在最新的时间和日期。下面是代码。
自定义标签代码
import Leaf
import Fluent
final public class LeafDataPoint: BasicTag {
public var name = "dataPoint"
public func run(arguments: ArgumentList) throws -> Node? {
guard
arguments.count == 3,
let report = arguments[0],
let dataPointName = arguments[1]?.string,
let dateField = arguments[2]?.string
else {
return nil
}
let point = try DataPointFluent.makeQuery()
.filter(DataPointFluent.Keys.reportID,
report.get(ReportFluent.Keys.id) as String)
.filter(DataPointFluent.Keys.name, dataPointName.string)
.first()
switch dateField {
case DataPointFluent.Keys.data:
return point?.data?.makeNode(in: nil)
case DataPointFluent.Keys.displayName:
return point?.displayName.makeNode(in: nil)
default:
return nil
}
}
}
在 Routes.swift 中
get("machine", String.parameter) {req in
let machineSerial = try req.parameters.next(String.self)
let reports = try ReportFluent.byMachine(serial: machineSerial)
return try self.view.make("machine_overview.leaf",["reports":
reports,"id": machineSerial])
}
machine_overview.leaf
<table>
<tr>
<th><h3>Date</h3></th>
<th><h3>Location</h3></th>
<th><h3>Link</h3></th>
</tr>
#loop(reports, "report") {
<tr>
<td>#(report.date)</td>
<td>#dataPoint(report, "ort", "data")</td>
<td><a href="/bericht/#(report.id)">Complete Report Data</a></td>
</tr>
}
</table>
我曾尝试使用 loop.isFirst 但没有成功。