2017-05-29 93 views
0

TL;博士希望從排序AWS API網關排序/順序AWS API網關輸出

API輸出我有一個dynamoDB表 'NP' 與關鍵 'ID' 和GSI 'atype的指數'。沒有排序鍵。

另外,我有API網關映射模板

{ 
    "TableName": "NP", 
    "IndexName": "atype-index", 
    "KeyConditionExpression": "atype = :v1", 
    "ExpressionAttributeValues": { 
     ":v1": { 
      "S": "$input.params('atype')" 
     } 
    } 
} 

映射模板將提取表中的所有值與GSI鍵指定的字符串匹配。但是,這些值沒有特定的順序提取,例如,該API可以是:

{ 
    "Count": 3, 
    "Items": [ 
    { 
     "apiUrl": { 
     "S": 「ee」 
     }, 
     "webTitle": { 
     "S": 「dd」 
     }, 
     "atype": { 
     "S": 「type」 
     }, 
     "id": { 
     "S": "1a" 
     } 
    }, 
    { 
     "apiUrl": { 
     "S": 「dd」 
     }, 
     "webTitle": { 
     "S": 「cc」 
     }, 
     "atype": { 
     "S": "atype" 
     }, 
     "id": { 
     "S": 「3a」 
     } 
    }, 
    { 
     "apiUrl": { 
     "S": 「cc」 
     }, 
     "webTitle": { 
     "S": 「bb」 
     }, 
     "atype": { 
     "S": "atype" 
     }, 
     "id": { 
     "S": 「2a」 
     } 
    } 
    ], 
    "ScannedCount": 3 
} 

如何排序的關鍵「apiURL」,例如上面的輸出?

回答

1

如果您使用的是查詢API(而不是掃描),那麼您所描述的就是排序關鍵字所能完成的工作。

如果添加排序鍵,則在查詢給定分區鍵時,結果將根據排序鍵進行排序。

編輯:只是爲了澄清,沒有辦法在映射模板中的API GW層進行排序。

如果開銷對您的用例來說是值得的,那麼您可以在API GW和DDB之間放置一個Lambda函數。否則,可能更適合在客戶端排序。