我正在使用外部身份验证系统对用户进行身份验证。但我想从该外部系统捕获结果,并为成功通过身份验证且尚未在我的本地数据库中的用户创建记录。
我已经为正在工作的外部身份验证系统编写了自定义中间件,但我不知道如何检查用户是否已经存在于我当前的数据库中。我目前使用 FluentSQLite 作为我的后备数据库。
let creds = returnFromExternalAuth()
// creds = ["id": "1", "emailAdress": "blah@blah.com", "firstName": "Test", "lastname": "User"]
let user = User.query(on: request).filter(\.ID == id).first()
// returns EventLoopFuture<User?>
我想做的是
if let user = try User.query(on: request).filter(\.ID == id).first(){
// Return the found DB user
return User.query(on: request).filter(\.ID == id).first()
} else {
// create db entry for user
// Query and return the newly created DB object
return User.query(on: request).filter(\.ID == id).first()
}
这不适用于 .first(),因为它不返回 Optional。
提前感谢您的任何帮助、想法或建议。
德里克