问题标签 [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.
velocity - VTL 中的美元和感叹号(爆炸)符号
我最近在一些 Velocity 代码中遇到了这两个变量:
我对它们的相似性感到惊讶,所以我开始怀疑代码的正确性,并对找出两者之间的区别感兴趣。
速度是否可能允许这两个符号的任何顺序,或者它们有不同的目的?你知道答案吗?
json - 如何将 aws API 网关的响应从 json 转换为 XML?
我为 SQS(FIFO) 创建了一个 API,它工作正常,但它返回 Json 响应,但我需要 XML 响应。
以下是在发送给客户端之前需要转换的 Json 响应:
graphql - 是否可以使用 VTL 随机化 DynamoDB 查询结果?
我有一个 AppSync API,并且需要以随机顺序返回数据。
这就是我目前所拥有的,我不知道从哪里开始,也找不到任何关于此的文档。
amazon-dynamodb - AppSync BatchGet 过滤返回限制错误
背景
我们将 AWS AppSync 与附加的 DynamoDB 数据源一起使用。在将批处理结果返回给我们的客户之前尝试过滤查询时,我们遇到了一个非常令人困惑的情况。目标是根据被过滤的键中包含的子字符串过滤我们的结果。
我们的 DynamoDB 有一个复合键,如下所示:
例如:
在这里你会找到我们的请求解析器:
我们的响应解析器:
问题
当我们用这样的东西查询时:
当filter
用户输入字符时,var 的值会发生变化——例如,,$filter = A
然后$filter = Au
,然后$filter = Aus
,等等——我们得到非常奇怪的返回。在几乎所有情况下,我们似乎都会得到这样的结果:
奇怪的是,如果我们使用nextToken
我们会在结果的第二页或第三页中找到我们正在寻找的结果:
假设
我们花了太多时间认为这是我们的过滤器表达式的问题(可能contains
是问题还是可能begins_with
是问题?)。但是,我们注意到的是,如果我们将limit
(默认值3
或通过客户端提供的count
)更改为通常大于查询中返回的元素数组的预期大小 - 也就是说,之前过滤器表达式应用于结果 - 问题似乎不存在。
例如,使用filter: 'Au'
,如果我们将默认限制设置为200
而不是3
,我们得到的正是我们应该得到的(只有两个以 'Au' 开头的国家名称)!
我的问题是:为什么limit
显然返回了我将要调用的具有“隐藏”值的数组?我的猜测是,除了找到过滤器匹配的索引之外,返回的总返回大小带有一堆空值。无论哪种方式,为什么我们没有以预期的方式获得回报?为什么在limit
这里过滤的不仅仅是回报的数量——即回报的实际结构方式?
任何帮助将不胜感激!
amazon-web-services - 如何直接从请求映射器返回?
考虑以下 GraphQL 模板:
Foo 类型中字段的映射模板bars
如下所示:
这很好用。但是如果该bars
字段包含空数组[]
,模板显然会崩溃并出现以下错误:
所以我的问题是:
如何防止查询被执行,并在$context.source.bars
为空时将一个空数组返回到响应模板?
amazon-web-services - 解析器中的 AppSync GraphQL 变异服务器逻辑
我在寻找好的来源/弄清楚如何正确地将服务器端验证添加到我的 AppSync GraphQL 突变时遇到问题。
本质上,我使用 AWS 仪表板来定义我的 AppSync 架构,因此为我创建了 DynamoDB 表,以及为数据设置的一些基本解析器。
不,我需要实现以下目标:
inventory
我有一个球员gold
- 玩家调用
purchaseItem
突变item_id
- 一旦调用此突变,我需要在解析器中执行一些检查,即检查
item_id
关联 DynamoDB 的 int 'Items' 表是否存在,检查玩家是否有足够的金币,再次在关联 DynamoDB 的“Players”表中,如果是,则写入Players
DynamoDB 表通过将项目添加到他们的库存和新减去的黄金数量。
我相信实现这一目标并降低成本和延迟的最有效方法是为 AppSync 使用“Apache Velocity”模板语言?
很高兴看到这个例子展示了如何查询/写入 DynamoDB、处理错误和正确解决突变。
error-handling - 如何使用 $util.error 在 AppSync 中发送自定义错误
我有一个关于 AppSync 错误处理的问题。我想将errorInfo
对象与错误响应一起发送,我尝试使用$util.error
. 根据文件:
https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html
$util.error(String, String, Object, Object)
引发自定义错误。如果模板检测到请求或调用结果错误,则可以在请求或响应映射模板中使用此功能。此外,还可以指定 errorType 字段、数据字段和 errorInfo 字段。数据值将添加到 GraphQL 响应中的错误内的相应错误块中。注意:数据将根据查询选择集进行过滤。errorInfo 值将添加到 GraphQL 响应中的错误内的相应错误块中。注意:errorInfo 不会根据查询选择集进行过滤。
这是我的 ResponseMappingTemplate 的样子:
这是我在解析器上所做的:
这是我在 CloudWatch 日志中看到的内容:
这是我在回复中得到的:
请注意,它errorInfo
是空的,我有些如何得到 CustomTemplateException。我怀疑这是因为$utils.error
. 但我不知道为什么。谁能帮忙指出错误或告诉我是否errorInfo
可以发送自定义
amazon-web-services - AppSync 到 DynamoDB 更新查询映射错误
我有以下 DynamoDB 映射模板,用于更新现有 DynamoDB 项目:
但我收到以下错误:
我试过删除部分,它似乎与表达式值有关,但我看不出语法有什么问题。
amazon-dynamodb - 使用 VTL 在 AppSync 中添加或更新修改日期属性
我正在开发 AppSync,我正在努力研究如何使用 VTL 在 Dynamo Db 中保存日期。我的实际要求是保存调用 API 的日期。请让我知道如何在 Dynamo Db 中使用 Date.now() 来实现这一点。提前致谢。
aws-appsync - 如何在 VTL 的 putItem 中添加当前日期
我一直在尝试使用 VTL 将 createDate 添加到 DynamoDB 中。我发现 $core_v2_utility.CurrentDate 有错误