amazon-dynamodb - 使用 `$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))
不适合我吗?
推荐阅读
- autodesk-forge - Autodesk-Forge 在属性检查器中隐藏属性
- android - 是否有任何理由将 LiveData 范围限定为片段的生命周期,而不是片段视图的生命周期?
- python - Python多处理奇怪的输出
- java - 在 Gradle 中管理传递依赖版本
- jquery - 变量范围和执行顺序
- javascript - 点击时调用 Uikit.toggle
- amazon-dynamodb - 如何判断 DynamoDB 限制请求成功的频率?
- swift - 如何解决 SceneKit 渲染器“EXC_BAD_ACCESS (code=1, address=0xf000000010a10c10)”?
- python - 清理标签 bs4
- excel - 按 ID 查找报告:不支持请求方法“GET”