首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蒸气-快速DecodingError:无法转换到目前为止的MySQL数据

蒸气-快速DecodingError:无法转换到目前为止的MySQL数据
EN

Stack Overflow用户
提问于 2022-08-04 08:12:38
回答 1查看 78关注 0票数 1

我正在尝试使用Vapor-Fluent从我的MySQL数据库中获取一些文章,但是我的日期类型有问题(我在Vapor中读过一些日期类型,但我不知道如何解决这个问题)。

这是我的Vapor-流利模型:

代码语言:javascript
复制
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
    }
}

这位是我的财务总监:

代码语言:javascript
复制
func getContent(req: Request) async throws -> [ArticleModel] {
    try await ArticleModel(on: req.db)
        .sort(\.$checkedOutTime)
        .all()
}

这是我的tbl_article表中的日期类型的格式(它在我的数据库中是日期时间类型):

代码语言:javascript
复制
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连接,我不知道如何解决有关日期类型的这个问题)。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-04 12:03:50

我确信这个问题是由您的NULL数据列中的一个checked_out_time值引起的。

该错误明确表示从数据库中获取了一个nil值,而且由于数据类型是非可选的,因此它是错误的。

通过使用Date?将您的字段定义为可选,应该可以简单地修复。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73232487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档