Ich benutze Vapor um eine einfache Web App zu schreiben. Ich habe eine Entität, um Sitzungsinformationen in einer Datenbank zu speichern. Der Code für diese Einheit ist wie folgt:Warum schlägt meine Vapor-Abfrage immer fehl?
struct SessionToken: Model{
var exists: Bool = false
var id: Node?
var username: String
var accessToken: String
var expiryDate: String
init(username: String, accessToken: String, expiryDate: String) {
self.username = username
self.accessToken = accessToken
self.expiryDate = expiryDate
}
init(node: Node, in context: Context) throws {
try self.id = node.extract("id")
try self.username = node.extract("username")
try self.accessToken = node.extract("accessToken")
try self.expiryDate = node.extract("expiryDate")
}
func makeNode(context: Context) throws -> Node {
let sessionToken = try Node(node:["id": id, "username": username, "accessToken": accessToken, "expiryDate": expiryDate])
return sessionToken
}
static func prepare(_ database: Database) throws {
try database.create("sessiontokens"){ sessiontokens in
sessiontokens.id()
sessiontokens.string("username")
sessiontokens.string("accessToken")
sessiontokens.string("expiryDate")
}
}
static func revert(_ database: Database) throws {
try database.delete("sessiontokens")
}
}
ich einige gefälschte Informationen in die Datenbank eingeben, aber wenn ich die Datenbank mit dem folgenden Code-Abfrage:
let token = try SessionToken.query().filter("username", "[email protected]").first()
Ich erhalte eine Fehlermeldung: Could not initialize SessionToken, skipping: unableToConvert(node: nil, expected: "String")
Die lustige Sache ist, dass, wenn ich SessionToken
durch eine andere Entität im Projekt ersetzen, funktioniert der Code ganz gut. Die einzige Entität, die ich Probleme habe, irgendwelche Informationen von der Datenbank zu holen ist SessionToken
und es hat mich seit letzter Nacht frustriert!
Ich würde es wirklich schätzen, wenn mir jemand in die richtige Richtung zeigen könnte, um dieses Problem zu lösen.
P.S. Ich benutze Postgres.