2016-10-05 3 views
1

Когда я делаю запрос получить от dynamoDB с помощью АМС nodejs клиента результат содержит ответ с типом в качестве ключа, т.е.Как переформатировать ответ DynamoDB от nodejs клиента

{ 
    Item: { 
     newrelic_id: { 
      S: 'nr-1234' 
     } 
    , 
     jumpcloud_id: { 
      S: 'j-234' 
     } 
    , 
     microtime: { 
      N: '1475690490854' 
     } 
    , 
     instance_id: { 
      S: 'i-abc1234' 
     } 
    } 
} 

Обратите внимание, что ключи к значениям являются префиксами для типов, S для String и N для Number есть ли способ удалить этот «ключ типа»?

+1

Я бы рекомендовал использовать DocumentClient, поскольку он автоматически преобразует все это для вас. 'new AWS.DynamoDB.DocumentClient()' – idbehold

ответ

2

Вот пример кода с использованием DocumentClient.

var AWS = require("aws-sdk"); 

var creds = new AWS.Credentials('akid', 'secret', 'session'); 

AWS.config.update({ 
    region : "us-west-2", 
    endpoint : "http://localhost:8000", 
    credentials : creds 
}); 

var docClient = new AWS.DynamoDB.DocumentClient(); 

var table = "Movies"; 

var year_val = 2015; 
var title = "The Big New Movie"; 

var params = { 
    TableName : table, 
    KeyConditionExpression : 'yearkey = :hkey and title = :rkey', 
    ExpressionAttributeValues : { 
     ':hkey' : year_val, 
     ':rkey' : title 
    } 
}; 

docClient.query(params, function(err, data) { 
    if (err) { 
     console.error("Unable to read item. Error JSON:", JSON.stringify(err, 
       null, 2)); 
    } else { 
     console.log("GetItem succeeded:", JSON.stringify(data, null, 2)); 
    } 
}); 

Выход: -

Выход не имеет тип данных атрибута.

GetItem succeeded: { 
    "Items": [ 
    { 
     "title": "The Big New Movie", 
     "yearkey": 2015, 
     "info": { 
     "rating": 0, 
     "plot": "Nothing happens at all." 
     } 
    } 
    ], 
    "Count": 1, 
    "ScannedCount": 1 
} 
Смежные вопросы