2-е РЕДАКТИРОВАНИЕ : Я полностью упустил, что вы не используете DocumentClient (как указал Владислав Уленко), поэтому обновленный ответ ниже для полноты.
У вас есть два варианта:
Первая опция использовать сервисный объект DynamoDB с методом getItem
следующим образом:
...
var ddb = new AWS.DynamoDB({apiVersion: '2012-08-10'});
var params = {
TableName: 'customers',
Key: {
'email': {S: 'james@gmail.com'} . // <-- pay attention to data type 'S'
},
};
ddb.getItem(params, function(err, data) {
if (err) {
res.send(err);
} else {
res.send(data);
}
});
DynamoDB Типы данных (значения атрибута) указаны здесь (ищите таблицу Marshalling / Unmarshalling mapping.
Второй вариант должен использовать DocumentClient
. В этом сценарии вам не нужно беспокоиться о маршалинге и немаршалинге данных запроса / ответа (значение DynamoDB для / из типа JavaScript). В этом случае ваш код выглядит так:
...
var docClient = new AWS.DynamoDB.DocumentClient({apiVersion: '2012-08-10'});
var params = {
TableName: 'customers',
Key: {'email': 'james@gmail.com'}
};
docClient.get(params, function (err, data) {
if (err) {
res.send(err);
} else {
res.send(data);
}
});
...
Я бы предложил использовать DocumentClient
вместо DynamoDB'
getItem`, поскольку он полностью обрабатывает все преобразования данных!
Если вы этого не сделаете, ТАКЖЕ вам необходимо позаботиться о типах данных ответа, например:
data.Items.forEach(function(element, index, array) {
console.log(element.FristName.S + " " + element.LastName.S);
});
не уверен, хочешь ли ты этого
3-е РЕДАКТИРОВАНИЕ :
Теперь, когда вы сделали вышеупомянутое, вы получаете ошибку:
"The provided key element does not match the schema"
Это означает, что ключ, который вы использовали, не совпадает с ключом, определенным в вашей схеме, опять же из документации :
Для первичного ключа вы должны предоставить все атрибуты. Например, с простым первичным ключом вам нужно только указать значение ключа раздела. Для составного первичного ключа необходимо указать значения как ключа раздела, так и ключа сортировки.
Проверьте ключи в деталях таблицы (пример)
и убедитесь, что вы указали все ключи, упомянутые там, в параметре ключа
Опять же, как указал Владислав в разделе комментариев своего ответа, если вам нужно найти элемент, используя атрибут, который не является вашим первичным ключом, вам нужно использовать операцию scan
вместо getItem
. Вы можете найти образец в документации