#javascript #json #amazon-dynamodb
#javascript #json #amazon-dynamodb
Вопрос:
Я написал скрипт, который вызывает лямбда-функцию на AWS, эта лямбда-функция должна записывать записи в таблицу Dynamo.
Правильный формат, который записывается большую часть времени, это:
Есть несколько, которые записываются следующим образом:
"yearOfBirth": "1973/01/01",
"yearsOfExperience": "5 or more years",
"zipCode": "60657"
"yearOfBirth": {
"S": "1973/01/01"
},
"yearsOfExperience": {
"S": "5 or more years"
},
"zipCode": {
"S": "60657"
}
Что является причиной этого?
Редактировать:
Код, который я использую, который я передаю docClient.put()
var profile = require('../model/userProfile.js');
var _ = require('lodash');
module.exports.save = function(userId, data, tableName, cb) {
_(data).forIn(function(value, key) {
var keyAttr = key;
var valAttr = value;
var params = {
TableName: tableName,
Key: {
id: userId
},
UpdateExpression: 'SET #attrName = :attrValue',
ExpressionAttributeNames: {
'#attrName': keyAttr
},
ExpressionAttributeValues: {
':attrValue': valAttr
}
};
profile.appendDataToUser(params, cb);
});
};
profile.appendDataToUser просто выполняет вызов docClient.put()
Комментарии:
1. Нам нужен код вашей лямбда-функции
Ответ №1:
Пример кода будет полезен. Но я подозреваю, что вы можете использовать AWS.DynamoDB.DocumentClient
для записи своих записей и одновременного указания типов полей. Если вы используете AWS.DynamoDB.DocumentClient
, вам не нужно указывать типы полей, вы можете просто передать обычный объект javascript. Но если вы используете AWS.DynamoDB
, вам нужно указать типы полей.
Использование AWS.DynamoDB
var dynamodb = new AWS.DynamoDB();
dynamodb.putItem({
TableName: 'user',
Item: {
"yearOfBirth": {
"S": "1973/01/01"
},
"yearsOfExperience": {
"S": "5 or more years"
},
"zipCode": {
"S": "60657"
}
}
});
Использование AWS.DynamoDB.DocumentClient
var dynamodb = new AWS.DynamoDB.DocumentClient();
dynamodb.put({
TableName: 'user',
Item: {
"yearOfBirth": "1973/01/01",
"yearsOfExperience": "5 or more years",
"zipCode": "60657"
}
});
Комментарии:
1. Это правильно, я использую
AWS.DynamoDB.DocumentClient()
2. Также используя `docClient.put()’, я отредактирую исходное сообщение, чтобы включить код, который я использую для лямбда-выражения.