Поместите элемент в таблицу DynamoDB с помощью AWS SDK для Node.js

Я новичок в javascript и node.js, и мне было интересно, может ли кто-нибудь помочь мне разобраться в синтаксисе помещения нового элемента в существующую таблицу на AWS Dynamodb через их SDK node.js. Вот что у меня есть на данный момент. Есть ли пример того, что я пытаюсь сделать? Если бы кто-нибудь мог указать мне правильное направление, я был бы очень признателен.

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'us-east-1'});
var dynamodb = new AWS.DynamoDB();

var item = {
    // I need to put the an item with a the primary key of "id", and an attribute called "item"
    // I'm new to js and node.js, so if somebody could help me understand the documentation
    // http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/frames.html#!http%3A//docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB_20120810.html
}

dynamodb.putItem({TableName: 'log_dev', Item: item}, function(err, data){
    if (err) {
    console.log(err); // an error occurred
    } else {
    console.log(data); // successful response
    }
});

person yz10    schedule 20.07.2013    source источник


Ответы (4)


Я ожидаю, что ваш идентификатор будет числовым ...

var item = {
    "id": {"N": 1234},
    "title": {"S": "Foobar"}
}

Обратите внимание, что с DynamoDB вы указываете тип данных (N »числовой, S» строковый, B »двоичный) при создании таблицы, только для первичный ключ (HashKey или HashKey + RangeKey). Все остальные столбцы могут различаться по типу данных и могут рассматриваться как пары ключ-значение. Поэтому для DynamoDB важно всегда кодировать тип данных с помощью атрибутов элемента.

person muhqu    schedule 22.07.2013

Я не думаю, что ответ muhqu работает, я считаю, что значение атрибута должно быть строкой.

var item = {
"id": {"N": "1234"},
"title": {"S": "Foobar"} }

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#putItem-property

person Ryan Zhou    schedule 27.10.2015

Я бы предложил использовать documentClient, поскольку это упрощает чтение и запись данных в DynamoDb. Также использование условного putItem гарантирует, что элемент уникален и не перезаписывает существующий элемент. attribute_not_exists проверяет, не существует ли userId в примере. Если userId существует, выдает ошибку. Надеюсь, еще не поздно: P

var AWS = require('aws-sdk');
AWS.config.loadFromPath('./config.json');
AWS.config.update({region: 'us-east-1'});
var dynamodb = new AWS.DynamoDB.DocumentClient();

var item = {
"userId" : {"N":"12345678"},
"name":{"S":"Bob"}
}

var dbParam= {
TableName: tableName,
Item:item,
ConditionExpression: 'attribute_not_exists(#u) or #u = :userId',
ExpressionAttributeNames: { "#u" : "userId"}
}

dynamodb.putItem(dbParam, function(err,data) {
if(err){
console.log("err",err);
}
else{
console.log("data",data)
}
});

person maithri vemula    schedule 19.07.2020

person    schedule
comment
DynamoDb-marshaler поможет облегчить боль при форматировании - person tsuz; 09.06.2016