问题标签 [vtl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
194 浏览

javascript - 使用 VelocityJS 解析 VTL 时如何修复“JSON 中的意外令牌 $”

为了为我的 AppSync 解析器编写单元测试,我使用 VelocityJS 包来解析我的 sam 模板中的 VTL。但是,VTL 模板没有被完全解析。

该代码在 AWS 上运行良好,是单元测试出错。 https://github.com/shepherdwind/velocity.js

当使用let result = Velocity.parse(template, ctx);结果是字符串"$util.toJson($ctx.result)"而不是 JSON 值时$ctx.result

IE:

0 投票
1 回答
7073 浏览

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

我不确定如何使用 Velocity 模板语言实现以下目标。

本质上,我想检查给定列表/数组中是否存在给定值。在 C# 中,它相当于.Any()or.Contains()方法。

当然,我可以只使用多个if...else...条件并循环遍历列表来检查某个值的存在,但是代码很快就会变得混乱(如果查找列表很大)。有没有更好的方法来做到这一点?

0 投票
1 回答
666 浏览

regex - 是否可以在 VTL 解析器中执行基于正则表达式的字符串替换?

我想定义一个响应映射模板如下:

目标是删除每个项目的 SK 属性开头的时间戳后跟“-”字符。

我检查了正则表达式是否正确,但这似乎不起作用,因为开头的数字没有被删除。

也试过了...replace(/^([0-9]){1,}-/", "")

如果我记得正确的话,文档在某处说所有 Java 字符串方法都可用。

我在这里做错了什么?

0 投票
1 回答
3671 浏览

amazon-web-services - 使用解析器自动创建 DynamoDB createdAt、updatedAt 和 version 属性

我第一次使用 AWS AppSync 并尝试了解 DynamoDB 解析器。我的架构包括三个我希望自动设置的元数据属性:createdAt: AWSTimestampupdatedAt: AWSTimestampversion: Integer。我可以在creatItem解析器中设置它们的初始值,但我无法理解updateItem解析器的工作原理。

作为参考,这在 AWS 上的 URL 与此类似: https ://console.aws.amazon.com/appsync/home#/[apiId]/v1/schema/Mutation/updateItem/resolver

经过大量试验和错误,这是我现在的代码:

这是当前的错误:

您还会注意到我将 version 设置为静态值 99 而不是n+1. 这是我接下来要弄清楚的事情,但是如果您有任何提示,我很乐意在这里提出。

这是完整的解析器,包括 AWS 的所有样板:

提前致谢!

编辑:我试图概括上面的表名,但这是实际的模式,根据要求:

此外,查询和变量:

0 投票
1 回答
515 浏览

aws-appsync - AppSync 在请求映射模板中减去/添加当天到当天

在我的AppSync映射请求模板中,我需要在当前日期中添加或减去天。

我能找到的只是格式化和解析时间助手:$util.time 中的时间助手

todayString 就像:2019-08-23T09:00:00.000Z 但我需要设置新变量,表示同一时间,但当前日期前一天或后一天,格式相同。

是否有可能只使用 vtl - 我的 DynamoDB 数据源的映射请求模板?

0 投票
3 回答
841 浏览

amazon-web-services - AppSync BatchPutItem 不保存项目

我正在尝试使用 AppSync 将一些项目批量放入 DynamoDB。当我调用解析器时,它不会引发任何错误,但不会将任何内容保存到数据库中。

架构

IAM 角色:

解析器

从 AppSync 游乐场调用:

在此处输入图像描述

响应映射模板:

功能测试运行的输出模板:

在此处输入图像描述

DynamoDB 表

在此处输入图像描述

WhereTABLENAME设置为等于显示在 DDB 控制台中的 DynamoDB 表名称。所以像 BoxScoreFact-woieieie99392-prod 这样的东西。

该表始终为空,响应为空。这几乎是直接从文档中的示例中提取出来的。另外,我应该注意,使用正常的 create graphql 函数放置一个项目确实会将一个项目放置到预期的表中。

我在这里想念什么?

0 投票
0 回答
101 浏览

amazon-dynamodb - 如何将新项目的属性设置为(从所有项目中的最大值以 n 递增)?

我想要下面的表结构来存储自动递增一行的 pid* 属性

对于 PutItem 操作,以下 1) 是否可能,以及 2) 在 DynamoDB 领域是否可以接受?

3)如何使用 DyanmoDB 解析器映射器模板实现上述功能?

用例:

我正在尝试使用 AWS DynamoDB 来支持由 AWS AppSync 管理的 GraphQL,以下是 Mutation.createFoo 的请求映射模板

主键ID是 DynamoDB 自动生成的 UUID,这很好。但是我们的用例需要为 FooTable 中的每个新 Foo增加一个pid 。业务模型至少需要显示一个唯一的pid,而在后台,将使用诸如 GetItem、UUID时间戳之类的查询,并且照常营业。

由于实施细节问题,我也厌倦了要求改变商业模式。

参考:

0 投票
0 回答
364 浏览

aws-appsync - AppSync - VTL 支持来自字符串数组的哈希 MD5

在 AppSync 映射请求模板中,我需要从 String 数组生成MD5 哈希,以获得使用 node.js 库“ object-hash ”在其他地方生成的相同值(无法更改)。

$util 中的实用程序助手仅提供$util.base64Encode( byte[] ) : String

我是否遗漏了什么,或者 AppSync VTL 中现在肯定没有哈希 MD5 支持?

0 投票
3 回答
2978 浏览

amazon-web-services - 在 AWS 解析器映射模板中,是否有任何方法可以从对象中删除字段?

我正在使用解析器映射模板为GraphQLAWS中的解析器编写代码。AppSync

我知道有一种put方法可用于将字段添加到输入对象或任何其他对象。像这样(例如):

但是现在我想从对象中删除一个字段,例如输入对象。是否有任何类似于该put方法但用于删除字段的方法。就像是:

我是 AWS 的新手,DynamoDB而且AppSync.(您可以将我视为绝对的初学者。)

0 投票
1 回答
879 浏览

graphql - @connection 上的 Appsync 过滤列表

我有这样的架构

我想在通过连接应用服务和/或区域过滤器的Worker处进行查询。我想我必须编写一些自定义解析器,也许是流水线解析器,我想要一些关于如何实现它的指导。

是否有任何不同的方法来实现相同的目标。