0

私は、Amazon DynamoDBのテーブルからすべての項目を取得するためにサーバレスプロジェクトで機能を持っている:Serverless AppのDynamoDBからフィールド項目でソートされますか?

'use strict'; 

var AWS = require('aws-sdk'); 
var doc = new AWS.DynamoDB.DocumentClient(); 
var api = {}; 

api.getItems = (event, context, callback) { 
    var id = event.pathParameters.id; 

    var params = { 
     TableName: 'Items', 
     ExpressionAttributeValues: { ':itemId': id } 
    }; 

    doc.scan(params, function(err, res) { 
      if (err) return cb(null, { 
       statusCode: err.statusCode, 
       headers: { "Access-Control-Allow-Origin": "*" }, 
       body: JSON.stringify({ err: err.message }) 
      }); 

      if (res.Items === undefined) { 
       return cb(null, { 
        statusCode: 404, 
        headers: { "Access-Control-Allow-Origin": "*" }, 
        body: JSON.stringify({ err: "Assigned order are not found" }) 
       }); 
      } 

      if (res.Items.length > 0) { 
       return cb(null, { 
        statusCode: 200, 
        headers: { "Access-Control-Allow-Origin": "*" }, 
        body: JSON.stringify(res.Items) 
       }); 
      } else { 
       return cb(null, { 
        statusCode: 200, 
        headers: { "Access-Control-Allow-Origin": "*" }, 
        body: JSON.stringify([]) 
       }); 

      } 
     } 

    }; 

    module.exports = api; 

応答の各項目がdateフィールドが含まれています。 DynamoDBからのクエリ/スキャンを使用して、このフィールドでソートされた項目を(asc/descで)どのように取得できますか?

+0

ハッシュ/レンジテーブルのキーについて説明してください。 –

答えて

0

DynamoDBが順序付けられた結果を返す唯一の方法は、テーブルにソートキーがあるかどうかです。

idで照会し、日付順に並べ替える場合は、パーティションキーとしてidを使用し、ソートキーとして 'date as number'属性を使用できます。 DynamoDBのキーはString,Number or Binary attributesのみです。あなたは数値であってYYYYMMDDHHMMSS形式の日付を表す属性を持つことができます。これは当然、正しい順序でソートされます。次に、DynamoDB ScanIndexForward関数を使用して、結果セットを指定された数のアイテムに制限することができます。

また、アプリケーションコードを使用してIDで照会し、日付でソートすることもできます。

関連する問題