2

我有一个问题,首先使用叶子中的标签对新日期进行排序,蒸汽。从 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 但没有成功。

4

0 回答 0