首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataWeave "as Number“产生一个对象

DataWeave "as Number“产生一个对象
EN

Stack Overflow用户
提问于 2020-02-07 08:56:43
回答 2查看 107关注 0票数 1

我正在解决Mulesoft DIY 13-1的训练问题。我已经看过灵魂了,但是我想要我的方法。

我在访问db之前使用Retrieve,然后转换消息和Store。我在Store值字段中的Store表达式是:payload.lastTransactionID as Number,它在调试器中生成这个表达式:

TypedValue[值:‘B@d98305 a’,dataType:'SimpleDataType{type=java.io.Serializable,mimeType='application/json;charset=UTF-8'}‘

使用Logger,我可以得到一个数字。

我的配置XML:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="htt... blabla">
    <db:config name="Database_Config" doc:name="Database Config" doc:id="27b11761-5ac9-4336-a944-14fadd9edf47" >
        <db:my-sql-connection host="${db.host}" port="${db.port}" user="${db.user}" password="${db.password}" database="${db.database}" />
    </db:config>
    <flow name="flights_transactionFlow" doc:id="e70fff51-5a87-45ec-945d-6dbdf1bf6bcf" >
        <scheduler doc:name="Scheduler" doc:id="3ccd1b4f-bf48-4329-9e7f-03e36144c0ed" >
            <scheduling-strategy >
                <fixed-frequency frequency="10000"/>
            </scheduling-strategy>
        </scheduler>
        <os:retrieve doc:name="Retrieve" doc:id="9d0e9ee4-b86a-424a-8dad-1baee9f8f73a" key="transactionID">
            <os:default-value ><![CDATA[0]]></os:default-value> // Set 0 or value of 'transactionID'
        </os:retrieve>
        <db:select doc:name="Select" doc:id="5f82613b-ca5c-494f-ad7a-3b4ea1b17325" config-ref="Database_Config">
            <db:sql >SELECT *
FROM flights_transactions
WHERE transactionID &gt; :transactionID // Select > transactionID
LIMIT 10</db:sql>
            <db:input-parameters ><![CDATA[#[{'transactionID': vars.transactionID default 0}]]]></db:input-parameters>
        </db:select>
        <ee:transform doc:name="Transform Message" doc:id="ce008827-a25b-4c38-b494-00c5e388c3db">
            <ee:message>
                <ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
    records: payload,
    lastTransactionID: payload[sizeOf(payload) - 1].transactionID
}]]></ee:set-payload>
            </ee:message>
        </ee:transform> // Yields json with payload.records (10 items) and payload.lastTransactionID (highest fetched value)
        <os:store doc:name="Store transactionID" doc:id="b99c313b-d672-4c19-9726-bd3d1371f065" key="transactionID">
            <os:value><![CDATA[#[payload.lastTransactionID as Number]]]></os:value> // Give me the number
        </os:store>
        <logger level="INFO" doc:name="Logger" doc:id="74c44c47-70dd-4a31-ac8d-3df1444e5cd0" message='#[payload]'/>
    </flow>
</mule>

视觉辅助:

如何获得最后一个transactionID的编号并成功地设置它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-21 09:32:41

问题是我没有在Retrieve步骤中设置输出变量

票数 0
EN

Stack Overflow用户

发布于 2020-02-07 16:58:00

看起来结果是一个json (因为输入有效负载是一个json),您需要指定application/java作为表达式的输出。

代码语言:javascript
复制
output application/java --- payload.lastTransactionID as Number
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60110080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档