Vapor 如何通过电子邮件查找用户

Vapor How to find user by email

如何在登录方法中通过 vapor 中的电子邮件正确查找用户和 return 该用户或 return 错误, 我试过:

    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)
            }

        }
}

但我得到

Cannot convert return expression of type 'EventLoopFuture' to return type 'User'

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"))
    }
}