AWS AppSync VTL 模板失败

问题描述 投票:0回答:1

我有一个 Appsync VTL 模板,当我在

#if
块内有
#foreach
时,它会出错。

  1. 这是否是正确的语法
  2. 如果没有,我该如何编写这段代码?
    #foreach($method in $body.paymentMethods)
        #set($transformedMethod = {
            "Id": $method.id,
            "Object": $method.object,
            "BillingDetails": {
                "Email": $method.billing_details.email,
                "Name": $method.billing_details.name,
                "Phone": $method.billing_details.phone
            },
            "Created": $method.created,
            "Customer": $method.customer,
            "Livemode": $method.livemode,
            "Metadata": $utils.toJson($method.metadata),
            "Type": $method.type,
            #if($method.type.equals("us_bank_account"))
            "USBankAccount": {
                "AccountHolderType": $method.us_bank_account.account_holder_type,
                "AccountType": $method.us_bank_account.account_type,
                "BankName": $method.us_bank_account.bank_name,
                "FinancialConnectionsAccount": $method.us_bank_account.financial_connections_account,
                "Fingerprint": $method.us_bank_account.fingerprint,
                "Last4": $method.us_bank_account.last4,
                "Networks": {
                    "Preferred": $method.us_bank_account.networks.preferred,
                    "Supported": $utils.toJson($method.us_bank_account.networks.supported)
                },
                "RoutingNumber": $method.us_bank_account.routing_number,
                "StatusDetails": $method.us_bank_account.status_details
            }
            #end
        })
        $util.qr($paymentMethods.add($transformedMethod))
    #end

我已经尝试过了

#if($method.type == "us_bank_account"). 这也行不通

graphql aws-appsync vtl aws-appsync-resolver velocity-template-language
1个回答
0
投票

此问题可能是由于 #if 指令内的条件造成的。如果条件未正确评估为布尔值,则可能会导致错误。
在你的模板中:

#if($method.type.equals("us_bank_account"))

该指令检查当前

$method
对象的 type 属性是否等于字符串
"us_bank_account"
。如果 type 属性不存在或者不是字符串,这可能会导致错误。

© www.soinside.com 2019 - 2024. All rights reserved.