我正在尝试使用Vapor-Fluent从我的MySQL数据库中获取一些文章,但是我的日期类型有问题(我在Vapor中读过一些日期类型,但我不知道如何解决这个问题)。
这是我的Vapor-流利模型:
final class ArticleModel: Model, Content {
static let schema = "tbl_article"
@ID(custom: .id)
var id: Int?
@Field(key: "title")
var title: String
@Field(key: "description")
var description: String
@Field(key: "checked_out_time")
var checkedOutTime: Date
init() { }
init(id: Int,
title: String,
description: String,
checkedOutTime: Date) {
self.id = id
self.title = title
self.description = description
self.checkedOutTime = checkedOutTime
}
}这位是我的财务总监:
func getContent(req: Request) async throws -> [ArticleModel] {
try await ArticleModel(on: req.db)
.sort(\.$checkedOutTime)
.all()
}这是我的tbl_article表中的日期类型的格式(它在我的数据库中是日期时间类型):
2022-08-02 21:51:29当我试图通过访问我的URL获得文章时,它会返回以下错误:
{“错误”:真,“原因”:“无效字段: checked_out_time类型:日期错误: typeMismatch(Foundation.Date,Swift.DecodingError.Context(codingPath:[],debugDescription:”无法转换MySQL数据到日期: 1970-01-01 00:00:00 +0000",underlyingError: 0))}
我的问题是:
我要改变什么才能让这件事成功?我试图将我的模型类型更改为String,但它没有起作用,所以也许我必须更改与解码过程相关的内容?
我是Vapor新手(我正在创建我的第一个真正的MySQL连接,我不知道如何解决有关日期类型的这个问题)。
谢谢!
发布于 2022-08-04 12:03:50
我确信这个问题是由您的NULL数据列中的一个checked_out_time值引起的。
该错误明确表示从数据库中获取了一个nil值,而且由于数据类型是非可选的,因此它是错误的。
通过使用Date?将您的字段定义为可选,应该可以简单地修复。
https://stackoverflow.com/questions/73232487
复制相似问题