Ich habe eine ApiCall-Tabelle. Ich versuche sicherzustellen, dass für jeden API-Aufruf das entsprechende Token verwendet wurde. In einfachem Englisch, was ich denke, ich tue hier ist Filtern auf ApiCall
von apiCallId
, dann unter headOption
(es sollte nur eine b/c apiCallId ist einzigartig), dann Mapping darauf. Aus irgendeinem Grund, gibt diese Funktion eine leere List()
...Slick gibt leere Liste zurück, wenn es ein Objekt zurückgeben sollte
def apiCallMatchesToken(apiCallId: ApiCallId, token: String): Future[Boolean] = {
val tableQuery = ApiCalls.filter(_.apiCallId === apiCallId).result.headOption
database.tryRun(tableQuery).map({
case (a: ApiCallRow) => if (a.token == token) { true } else { false }
case _ => false
})
}
Ich habe doppelt geprüft, dass die apiCallId
in meiner Datenbank vorhanden ist. Was ist das Problem?
Sind Sie sicher, dass 'database.tryRun (tableQuery)' eine 'Option' vom Typ' ApiCallRow' zurückgibt? Ich würde eher denken, dass es etwas wie "Zukunft [Option [ApiCallRow]]" sein sollte. Darin würde es immer 'false' zurückgeben – Dnomyar