无法在 AppSync 响应映射模板中从 RDS 序列化 AWSDate
Unable to serialise AWSDate from RDS in AppSync response mapping template
我正在使用无服务器 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 没有日期的对象 ["SELECT id,name,description FROM Users WHERE id='$ctx.args.id'"]
它工作正常。
那么应该如何在 AWS AppSync 和 Aurora 中处理日期?我一直无法在文档中找到处理日期的任何示例或参考。 :(
我无意中在与这个问题相关的回购中找到了答案
事实证明,就像用户 dev1702 发现的那样,$utils.rds.toJsonObject($ctx.result)[0][0]
无法将 RDS 时间戳解析为 GraphQl AWSDate 格式。
所以只需更改 graphql 模式类型:
created_at: AWSDateTime
至:
created_at: String
解决了这个问题。
注意:如果您在将方案列类型更改为 AWSDateTime
后遇到此错误,只需访问 DynamoDB 控制台并更新不在ISO 8601
.
格式
您可以 SELECT to_char(created_at, 'YYYY-MM-DD"T"HH24:MI:SS"Z"') FROM Users
,这将适用于 AWSDateTime
。
另一个是 SELECT created_at::date FROM Users
,它适用于 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 没有日期的对象 ["SELECT id,name,description FROM Users WHERE id='$ctx.args.id'"]
它工作正常。
那么应该如何在 AWS AppSync 和 Aurora 中处理日期?我一直无法在文档中找到处理日期的任何示例或参考。 :(
我无意中在与这个问题相关的回购中找到了答案
事实证明,就像用户 dev1702 发现的那样,$utils.rds.toJsonObject($ctx.result)[0][0]
无法将 RDS 时间戳解析为 GraphQl AWSDate 格式。
所以只需更改 graphql 模式类型:
created_at: AWSDateTime
至:
created_at: String
解决了这个问题。
注意:如果您在将方案列类型更改为 AWSDateTime
后遇到此错误,只需访问 DynamoDB 控制台并更新不在ISO 8601
.
您可以 SELECT to_char(created_at, 'YYYY-MM-DD"T"HH24:MI:SS"Z"') FROM Users
,这将适用于 AWSDateTime
。
另一个是 SELECT created_at::date FROM Users
,它适用于 AWSDate
。