Как всегда возвращать массив в Vapor 3 и Fluent (даже для отдельных запросов сущностей) - PullRequest
1 голос
/ 24 февраля 2020

Я хотел бы иметь функцию контроллера индекса, которая возвращает массив объектов, если не задан параметр запроса, или один объект, если задан параметр id. Однако я хотел бы всегда получать массив, в последнем случае он содержит только один элемент.

Вот моя функция:

final class AddressController {
    func index(_ req: Request) throws -> Future<[Address]> {
        if let id = try? req.query.get(UUID.self, at: "id") {
            // THIS IS NOT WORKING...
            return Address.find(id, on: req)
        } else {
            return Address.query(on: req).all()
        }
    }
}

1 Ответ

3 голосов
/ 24 февраля 2020
final class AddressController {
    func index(_ req: Request) throws -> Future<[Address]> {
        if let id = try? req.query.get(UUID.self, at: "id") {
            return Address.find(id, on: req).map {
                guard let address = $0 else { return [] }
                return [address]
            }
        } else {
            return Address.query(on: req).all()
        }
    }
}
...