amazon-web-services - 无法从 AppSync 响应映射模板中的 RDS 序列化 AWSDate
问题描述
我正在使用无服务器 Aurora 作为我的数据库构建一个 AppSync 项目,并偶然发现了这个奇怪的错误:
"Can't serialize value (/getUsers/created_at) : Unable to serialize `2019-09-28 07:36:13` as a valid DateTime Object."
当我得到一个看起来像这样的用户对象时,就会发生这种情况:
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 中应该如何处理日期呢?我无法在文档中找到处理日期的任何示例或参考。:(
解决方案
我无意中在与此问题相关的 repo 中找到了答案Use AppSync and Amazon RDS with serverless-graphql
事实证明,就像用户dev1702发现的那样,它$utils.rds.toJsonObject($ctx.result)[0][0]
无法将 RDS 时间戳解析为 GraphQl AWSDate 格式。
因此,只需从以下位置更改 graphql 模式类型:
created_at: AWSDateTime
至:
created_at: String
解决了这个问题。
注意:如果您在将方案列类型更改为 后遇到此错误AWSDateTime
,只需访问 DynamoDB 控制台并更新格式不为ISO 8601
.
推荐阅读
- flutter - 通过 GitLab 管道接受 Flutter Android 许可证失败
- sql - 网关超时前如何优化
- python - 在python中将2D圆盘投影到3D球体中
- android - 如何按时间间隔将传感器信息添加到数据库?
- r - 是否有一个 R 函数可以通过 SD 找到与平均值的距离
- sql - SELECT 查询中的 SQL 帮助
- flutter - 你能像在 Flutter/Dart 中将一行插入一列一样将一列插入一行吗?
- drake - 德雷克的 Autodiff 时间
- r - CronR 只运行一次(频率设置为每分钟),之后不再运行
- python - 如何将日志从 tweepy 模块打印到标准输出