Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vapor How to find user by email

Tags:

swift

vapor

How to properly find user by email in vapor in login method and return that user or return error, I've tried:

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

        }
}

but I'm getting

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

like image 200
Gorthez Avatar asked Dec 21 '25 18:12

Gorthez


1 Answers

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"))
    }
}
like image 198
imike Avatar answered Dec 24 '25 09:12

imike



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!