我刚读这行:
format()方法的第一件事是从名为output.vm的类路径加载Velocity模板
在这种情况下,我无法弄清楚classpath的含义.
我不确定如何使用 Velocity 模板语言实现以下目标。
本质上,我想检查给定列表/数组中是否存在给定值。在 C# 中,它相当于.Any()or.Contains()方法。
#set($myValues = ["apple", "banana", "strawberry"])
#foreach($i in $items)
$myValues.any($i) <= better way to achieve this??
or something like this
$myValues.contains($i)
#end
Run Code Online (Sandbox Code Playgroud)
当然,我可以使用多个if...else...条件并循环遍历列表来检查某个值是否存在,但代码很快就会变得混乱(如果查找列表很大)。有没有更好的方法来做到这一点?
我在寻找如何正确地将服务器端验证添加到我的AppSync GraphQL突变方面遇到问题.
本质上,我使用AWS仪表板来定义我的AppSync架构,因此为我创建了DynamoDB表,以及为数据设置的一些基本解析器.
不,我需要实现以下目标:
inventory和的球员goldpurchaseItem变异item_iditem_id存在关联DynamoDB的int'Items'表,检查玩家是否有足够的黄金,再次在关联DynamoDB的'Players'表中,如果是,写入PlayersDynamoDB表通过将项目添加到他们的库存和新的减去黄金金额.我认为实现这一目标的最有效方法是降低成本和延迟,是为AppSync使用"Apache Velocity"模板语言?
很高兴看到这个示例显示如何查询/写入DynamoDB,处理错误并正确解决突变.
vtl amazon-web-services amazon-dynamodb apache-velocity aws-appsync
我目前正在尝试使用 AppSync 和 Apache Velocity 模板语言 (VTL) 创建动态查询。
我想用“OR”评估一系列begins_with
例如:
{
"operation": "Query",
"query": {
"expression": "pk = :pk and (begins_with(sk,:sk) or begins_with(sk, :sk1)",
"expressionValues": {
":pk": { "S": "tenant:${context.args.tenantId}",
":sk": {"S": "my-sort-key-${context.args.evidenceId[0]}"},
":sk1": {"S": "my-sort-key-${context.args.evidenceId[1]}"}
}
}
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。我也尝试过使用|代替,or但也没有成功。我得到:
无效的 KeyConditionExpression:语法错误;令牌:“|”,附近:“) | begin_with”(服务:AmazonDynamoDBv2;
如何使用 VTL 实现这一目标?
velocity amazon-dynamodb graphql apache-velocity aws-appsync
我一直在 AWS API Gateway 上使用映射模板,特别是 DynamoDB 集成。我发现检查可选字段非常不方便。例如,我有一个如下所示的 JSON 有效负载:
{
"optional_field": "abcd"
}
Run Code Online (Sandbox Code Playgroud)
现在,为了将其放入数据库,我使用如下映射:
#set($hasOptionalField = $input.path('$.optional_field') != "")
{
"TableName": "A_Table",
"Item": {
"id": {"S": "$context.requestId"}
#if($hasOptionalField),
"optional_field": {"S": "$input.path('$.optional_field')"}
#end
}
}
Run Code Online (Sandbox Code Playgroud)
根据Apache Velocity Reference,我应该能够使用更简单的语法来检查 null、empty、false 或 0,并自动回退到某个替代值,如下所示:
{
"TableName": "A_Table",
"Item": {
"id": {"S": "$context.requestId"},
"optional_field": {"S": "${input.path('$.optional_field')|'no_data'}"}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以将其保留为原样,没有任何后备,但如果尝试将空字符串作为属性值,DynamoDB API 会给您一个错误。
API 网关映射模板似乎没有 100% 实现 Apache Velocity 规范?
api amazon-web-services amazon-dynamodb aws-api-gateway apache-velocity