问题标签 [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.
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:
java - 如何使用 Velocity 模板语言检查数组中是否存在值
我不确定如何使用 Velocity 模板语言实现以下目标。
本质上,我想检查给定列表/数组中是否存在给定值。在 C# 中,它相当于.Any()
or.Contains()
方法。
当然,我可以只使用多个if...else...
条件并循环遍历列表来检查某个值的存在,但是代码很快就会变得混乱(如果查找列表很大)。有没有更好的方法来做到这一点?
regex - 是否可以在 VTL 解析器中执行基于正则表达式的字符串替换?
我想定义一个响应映射模板如下:
目标是删除每个项目的 SK 属性开头的时间戳后跟“-”字符。
我检查了正则表达式是否正确,但这似乎不起作用,因为开头的数字没有被删除。
也试过了...replace(/^([0-9]){1,}-/", "")
。
如果我记得正确的话,文档在某处说所有 Java 字符串方法都可用。
我在这里做错了什么?
amazon-web-services - 使用解析器自动创建 DynamoDB createdAt、updatedAt 和 version 属性
我第一次使用 AWS AppSync 并尝试了解 DynamoDB 解析器。我的架构包括三个我希望自动设置的元数据属性:createdAt: AWSTimestamp
、updatedAt: AWSTimestamp
和version: Integer
。我可以在creatItem
解析器中设置它们的初始值,但我无法理解updateItem
解析器的工作原理。
作为参考,这在 AWS 上的 URL 与此类似: https ://console.aws.amazon.com/appsync/home#/[apiId]/v1/schema/Mutation/updateItem/resolver
经过大量试验和错误,这是我现在的代码:
这是当前的错误:
您还会注意到我将 version 设置为静态值 99 而不是n+1
. 这是我接下来要弄清楚的事情,但是如果您有任何提示,我很乐意在这里提出。
这是完整的解析器,包括 AWS 的所有样板:
提前致谢!
编辑:我试图概括上面的表名,但这是实际的模式,根据要求:
此外,查询和变量:
aws-appsync - AppSync 在请求映射模板中减去/添加当天到当天
在我的AppSync映射请求模板中,我需要在当前日期中添加或减去天。
我能找到的只是格式化和解析时间助手:$util.time 中的时间助手
todayString 就像:2019-08-23T09:00:00.000Z 但我需要设置新变量,表示同一时间,但当前日期前一天或后一天,格式相同。
是否有可能只使用 vtl - 我的 DynamoDB 数据源的映射请求模板?
amazon-web-services - AppSync BatchPutItem 不保存项目
我正在尝试使用 AppSync 将一些项目批量放入 DynamoDB。当我调用解析器时,它不会引发任何错误,但不会将任何内容保存到数据库中。
架构
IAM 角色:
解析器:
从 AppSync 游乐场调用:
响应映射模板:
功能测试运行的输出模板:
DynamoDB 表
WhereTABLENAME
设置为等于显示在 DDB 控制台中的 DynamoDB 表名称。所以像 BoxScoreFact-woieieie99392-prod 这样的东西。
该表始终为空,响应为空。这几乎是直接从文档中的示例中提取出来的。另外,我应该注意,使用正常的 create graphql 函数放置一个项目确实会将一个项目放置到预期的表中。
我在这里想念什么?
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和时间戳之类的查询,并且照常营业。
由于实施细节问题,我也厌倦了要求改变商业模式。
参考:
aws-appsync - AppSync - VTL 支持来自字符串数组的哈希 MD5
在 AppSync 映射请求模板中,我需要从 String 数组生成MD5 哈希,以获得使用 node.js 库“ object-hash ”在其他地方生成的相同值(无法更改)。
$util 中的实用程序助手仅提供$util.base64Encode( byte[] ) : String
我是否遗漏了什么,或者 AppSync VTL 中现在肯定没有哈希 MD5 支持?
amazon-web-services - 在 AWS 解析器映射模板中,是否有任何方法可以从对象中删除字段?
我正在使用解析器映射模板为GraphQL
AWS中的解析器编写代码。AppSync
我知道有一种put
方法可用于将字段添加到输入对象或任何其他对象。像这样(例如):
但是现在我想从对象中删除一个字段,例如输入对象。是否有任何类似于该put
方法但用于删除字段的方法。就像是:
我是 AWS 的新手,DynamoDB
而且AppSync
.(您可以将我视为绝对的初学者。)
graphql - @connection 上的 Appsync 过滤列表
我有这样的架构
我想在通过连接应用服务和/或区域过滤器的Worker处进行查询。我想我必须编写一些自定义解析器,也许是流水线解析器,我想要一些关于如何实现它的指导。
是否有任何不同的方法来实现相同的目标。