Vapor Как найти пользователя по электронной почте - PullRequest
2 голосов
/ 05 мая 2020

Как правильно найти пользователя по электронной почте в парах метода входа в систему и вернуть этого пользователя или вернуть ошибку, я пробовал:

    func login(_ req: Request) throws -> Future<User> {
    return try req.content.decode(User.self).map { loginUser in
        let query = User.query(on: req)
        return query
            .filter(\.email == loginUser.email)
            .first()
            .flatMap { user in
                return user!.save(on: req)
            }

        }
}

, но получаю

Невозможно преобразовать возвращаемое выражение типа 'EventLoopFuture' в возвращаемый тип 'User'

1 Ответ

3 голосов
/ 06 мая 2020
func login(_ req: Request) throws -> Future<User> {
    return try req.content.decode(User.self).flatMap { loginUser in
        return User.query(on: req)
            .filter(\.email == loginUser.email)
            .first()
            .unwrap(or: Abort(.notFound, reason: "User not found"))
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...