2015-04-17 37 views
0

這是非常基本的,但我努力嘗試從keyvaluemap構建/檢索值。例如給定變量X和Y,其中X = 123abc,第一次執行時Y = foo,第二次執行時X = 456def,Y = bar,我希望有一個鍵值映射,其中[123abc] - > [foo]和[456def] - > [bar]。Apigee - 鍵值映射 - 使用可變鍵的問題

但是,當我嘗試檢索變量Z中的值時,使用任何一個X值,我總會得到最後一個增加的值:Z = bar。如果我刪除密鑰X = 456def,則檢索密鑰X = 123abc將返回密鑰不存在的錯誤。

我的猜測是,只有一個值被構建到地圖中,並且它變得像「」一樣放入,就好像變量未被設置一樣。覆蓋值「true」將用最後一次添加的值替換它。我確信該變量具有一個值,因爲它在跟蹤中的先前策略執行中正確顯示。

語法中是否有某些東西?有任何想法嗎?

我使用下面的策略來構建的關鍵

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<KeyValueMapOperations mapIdentifier="map1" enabled="true" continueOnError="false" async="false" name="buildmap1"> 
    <DisplayName>build map1</DisplayName> 
    <FaultRules/> 
    <Properties/> 
    <ExclusiveCache>false</ExclusiveCache> 
    <ExpiryTimeInSecs>-1</ExpiryTimeInSecs> 
    <InitialEntries/> 
    <Put override="true"> 
     <Key> 
      <Parameter>ref="X"</Parameter> 
     </Key> 
     <Value ref="Y"></Value> 
    </Put> 
    <Scope>organization</Scope> 
</KeyValueMapOperations> 

我使用下面的檢索關鍵

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<KeyValueMapOperations mapIdentifier="map1" enabled="true" continueOnError="false" async="false" name="getmap1"> 
    <DisplayName>get map1</DisplayName> 
    <FaultRules/> 
    <Properties/> 
    <ExclusiveCache>false</ExclusiveCache> 
    <ExpiryTimeInSecs>-1</ExpiryTimeInSecs> 
    <InitialEntries/> 
    <Get assignTo="Z"> 
     <Key> 
      <Parameter>ref="X"</Parameter> 
     </Key> 
    </Get> 
    <Scope>organization</Scope> 
</KeyValueMapOperations> 

回答

0

請看看文章https://community.apigee.com/articles/3384/keyvaluemap-kvmap-operations.html

<Parameter ref='X'></Parameter> 

其中X是變量。但是,您還希望從兩個變量中構建一個組合鍵

<Parameter ref='X-Y'></Parameter> 

將不起作用。您將需要使用Javascript策略來構建該組合鍵。

+0

請在此鏈接添加一些上下文。 「鼓勵與外部資源的鏈接,但請在鏈接中添加上下文,以便您的同行用戶瞭解它是什麼以及爲何存在。總是引用重要鏈接中最相關的部分,以防目標網站無法訪問或永久離線。「從[如何回答](http://stackoverflow.com/help/how-to-answer) – Cecilia