首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法检查记录是否存在?

有没有办法检查记录是否存在?
EN

Stack Overflow用户
提问于 2019-04-25 00:26:15
回答 1查看 363关注 0票数 1

我正在使用一个外部认证系统来认证用户。但我希望捕获来自该外部系统的结果,并为成功通过身份验证且不在我的本地数据库中的用户创建一条记录。

我已经为正在运行的外部身份验证系统编写了自定义中间件,但是我不知道如何检查用户是否已经存在于我当前的数据库中。我目前使用FluentSQLite作为我的后台数据库。

代码语言:javascript
复制
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?>

我想要做的事情是

代码语言:javascript
复制
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(),因为它不返回可选的值。

提前感谢您的任何帮助、想法或建议。

德里克

EN

回答 1

Stack Overflow用户

发布于 2019-04-25 04:09:57

更新:

我想我在这里找到了适合感兴趣的人的解决方案。

代码语言:javascript
复制
return User.query(on: request).filter(\User.ID == id).first().flatMap { optional in
   if let _ = optional {
      return User.query(on: request).filter(\User.ID == id).first()
   } else {
      _ = User(ID: creds["id"], emailAddress: creds["emailAddress"], firstName: creds["firstName"], lastName: creds["lastName"]).save(on: request)
      return User.query(on: request).filter(\.ID == id).first()
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55834641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档