我有一个 Appsync VTL 模板,当我在
#if
块内有 #foreach
时,它会出错。
#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"). 这也行不通
此问题可能是由于 #if 指令内的条件造成的。如果条件未正确评估为布尔值,则可能会导致错误。
在你的模板中:
#if($method.type.equals("us_bank_account"))
该指令检查当前
$method
对象的 type 属性是否等于字符串 "us_bank_account"
。如果 type 属性不存在或者不是字符串,这可能会导致错误。