无法在 AppSync 响应映射模板中从 RDS 序列化 AWSDate

2024-05-02

我正在使用无服务器 Aurora 作为数据库构建 AppSync 项目,并偶然发现了这个奇怪的错误:

"Can't serialize value (/getUsers/created_at) : Unable to serialize `2019-09-28 07:36:13` as a valid DateTime Object."

当我得到一个如下所示的 User 对象时,就会发生这种情况:

type Users {
  id: String!
  name: String!
  description: String
  created_at: AWSDateTime
  updated_at: AWSDateTime
  logged_in: AWSDateTime
}

该错误似乎发生是因为$utils.rds.toJsonObject($ctx.result)[0][0]无法解析 AWSDateTime。这使得任何带有日期的内容都无法从数据库中提供。

如果我只是选择没有日期的对象["SELECT id,name,description FROM Users WHERE id='$ctx.args.id'"]效果很好。

那么 AWS AppSync 和 Aurora 中应如何处理日期?我在文档中找不到任何有关处理日期的示例或参考。 :(


我无意中在与此问题相关的存储库中找到了答案将 AppSync 和 Amazon RDS 与 serverless-graphql 结合使用 https://stackoverflow.com/questions/50069352/use-appsync-and-amazon-rds-with-serverless-graphql

事实证明,就像用户dev1702 https://stackoverflow.com/users/5448519/dev1702发现,那$utils.rds.toJsonObject($ctx.result)[0][0]无法将 RDS 时间戳解析为 GraphQl AWSDate 格式。

因此,只需将 graphql 模式类型更改为:

created_at: AWSDateTime

to:

created_at: String

解决了这个问题。

A Note:如果您在将方案列类型更改为后遇到此错误AWSDateTime,只需访问 DynamoDB 控制台并更新不采用以下格式的记录ISO 8601.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 AppSync 响应映射模板中从 RDS 序列化 AWSDate 的相关文章

随机推荐