如何解决使用 `$utils.defaultIfNullOrEmpty` 来保存布尔值
当用户不发送 $context.arguments.input.isActive
时,我将此 null
值替换为默认值,如下所示:
#set($isActive = $utils.defaultIfNullOrEmpty($context.arguments.input.isActive,true))
但由于某种原因,这个 isActive
被保存为 null
。
例如:
我在 schema.graphql
中定义了这个突变:
type Mutation {
updateAccount(input: AccountInput!): Boolean
@aws_auth(cognito_groups: ["SuperAdmin"])
}
input AccountInput {
id: ID!
name: String!
picture: String!
isActive: Boolean
}
所以,当用户不发送 isActive
时,像这样:
mutation {
updateAccount(input: {
id: "xxxxx"
name: "xxxxx"
picture: "public/xxxxx/xxxxxx.jpg"
})
}
isActive
值保存为 null
。并应保存为 true
这是updateAccount
的解析器的完整代码:
#set($id = $context.arguments.input.id)
#set($currentDate = $utils.time.NowISO8601())
#set($isActive = $utils.defaultIfNullOrEmpty($context.arguments.input.isActive,true))
{
"version": "2018-05-29","operation": "UpdateItem","key": {
"id": $utils.dynamodb.toDynamoDBJson($id)
},"update": {
"expression": "SET #name = :name,#picture = :picture,#isActive = :isActive,#updatedAt = :updatedAt","expressionNames": {
"#name": "name","#picture": "picture","#isActive": "isActive","#updatedAt": "updatedAt"
},"expressionValues": {
":name": $utils.dynamodb.toDynamoDBJson($context.arguments.input.name),":picture": $utils.dynamodb.toDynamoDBJson($context.arguments.input.picture),":isActive": $utils.dynamodb.toDynamoDBJson($isActive),":updatedAt": $util.dynamodb.toDynamoDBJson($currentDate)
}
},"condition": {
"expression": "attribute_exists(id)"
}
}
解决方法
我可以这样解决:
#set($isActive = true)
#if(!$utils.isNull($context.arguments.input.isActive))
#set($isActive = $context.arguments.input.isActive)
#end
但是为什么:
#set($isActive = $utils.defaultIfNullOrEmpty($context.arguments.input.isActive,true))
对我不起作用?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。