我正在使用Vapor編寫簡單的網絡應用程序。我有一個實體將會話信息保存到數據庫中。這個實體的代碼如下:爲什麼我的Vapor查詢總是失敗?
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")
}
}
我進入一些假信息到數據庫中,但是當我查詢用下面的代碼數據庫:
let token = try SessionToken.query().filter("username", "[email protected]").first()
我得到一個錯誤:Could not initialize SessionToken, skipping: unableToConvert(node: nil, expected: "String")
有趣的是,當我用工程中的任何其他實體替換SessionToken
時,代碼工作得很好。我從數據庫中獲取任何信息的唯一實體是SessionToken
,自從昨晚以來,我一直感到沮喪!
我真的很感激,如果有人能指出我在正確的方向來解決這個問題。
P.S.我正在使用Postgres。