为什么我的更新语句需要架构

问题描述

我有一个 Dataweave 脚本,用于从电话号码字段中删除所有非数字字符。该代码在 Dataweave Playground 中正常工作,但在 Anypoint Studio 中引发错误。有效载荷是

{
  "Recipient": {
    "Name": "Bob Newhart","MailingAddress": {
      "Line1": "123 Main Street","Line2": "Apt 5","City": "Cumming","State": "GA","ZipCode": "30009","ZipCodePlus4": "3382"
    },"PhoneNumber": "(999) 555-1234","Company": "disney"
  }
}

脚本是

%dw 2.0
output application/json
---
(
  payload: payload update {case .Recipient.PhoneNumber -> replace (payload.Recipient.PhoneNumber,/\D/) with ""}
).payload

我正在运行此版本的 Anypoint Studio

Version: 7.4.2
Build Id: 202001311805

而 Anypoint Studio 返回的错误信息是: 无效输入“update {case”,预期架构或 &(第 6 行,第 20 列):

解决方法

update operator was added in Mule 4.3.0。如果您使用的是旧版 Mule,它将不可用。可能 Studio 7.4.2 也不知道。