Ich möchte eine Methode implementieren, die einen Benutzer erstellt, wenn es noch nicht existiert. Wenn es existiert, sollte der Benutzer zurückgegeben werden.So entpacken Sie die Option in Zukunft?
Hier ist mein Code:
def createUserIfNotExists(user: User) = {
for {
count <- userService.count(Some(user))
user <- if (count == 0) createUser(user) else userService.findOneByName(user.name)
} yield user
}
Mein Problem ist, dass findOneByName
kehrt Future[Option[User]]
und createUser
kehrt Future[User]
so die Typen nicht übereinstimmen.
Wie kann ich Future[Option[User]]
zu Future[User]
auspacken oder eine Ausnahme auslösen, wenn es None
gibt?
Das 'for' Verständnis dient keinem Zweck. – jwvh
@jwvh Warum? Könnten Sie bitte erklären? –
SO Kommentare erlauben mir nicht, formatierten Code zu präsentieren, aber CNTL-Kopieren Sie die folgenden und fügen Sie Whitespace nach Geschmack: 'def createUserIfNotExists (Benutzer: Benutzer) = if (userService.count (Einige (Benutzer))> 0) userService .findOneByName (user.name) sonst createUser (user) ' – jwvh