标签: apache-velocity

什么是类路径?

我刚读这行:

format()方法的第一件事是从名为output.vm的类路径加载Velocity模板

在这种情况下,我无法弄清楚classpath的含义.

java classpath apache-velocity

303
推荐指数
5
解决办法
18万
查看次数

如何使用 Velocity 模板语言检查数组中是否存在值

我不确定如何使用 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...条件并循环遍历列表来检查某个值是否存在,但代码很快就会变得混乱(如果查找列表很大)。有没有更好的方法来做到这一点?

java loops velocity vtl apache-velocity

9
推荐指数
1
解决办法
1万
查看次数

解析器中的AppSync GraphQL变异服务器逻辑

我在寻找如何正确地将服务器端验证添加到我的AppSync GraphQL突变方面遇到问题.

本质上,我使用AWS仪表板来定义我的AppSync架构,因此为我创建了DynamoDB表,以及为数据设置的一些基本解析器.

不,我需要实现以下目标:

  1. 我有一个拥有inventory和的球员gold
  2. 玩家称为purchaseItem变异item_id
  3. 一旦调用此突变,我需要在解析器中执行一些检查,即检查是否item_id存在关联DynamoDB的int'Items'表,检查玩家是否有足够的黄金,再次在关联DynamoDB的'Players'表中,如果是,写入PlayersDynamoDB表通过将项目添加到他们的库存和新的减去黄金金额.

我认为实现这一目标的最有效方法是降低成本和延迟,是为AppSync使用"Apache Velocity"模板语言?

很高兴看到这个示例显示如何查询/写入DynamoDB,处理错误并正确解决突变.

vtl amazon-web-services amazon-dynamodb apache-velocity aws-appsync

7
推荐指数
1
解决办法
448
查看次数

在 AppSync 中使用多个 begin_with 子句查询 DynamoDB

我目前正在尝试使用 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

6
推荐指数
1
解决办法
4495
查看次数

API 网关映射模板可选字段

我一直在 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

3
推荐指数
1
解决办法
2447
查看次数