Я знаю, как вставлять элементы в DynamoDB, когда они были в типе ниже
например: { "id": "10021", "AppName" "testingApp" }
Но я хочу вставить массив объектов, как в приведенном ниже примере:
например:
{
"testArray": [
{ "id" : "testID",
"applicationName" : "Myapp"
},
{
"id" : "testID1",
"applicationName" : "Myapp123"
} ]}
Если Dynamo DB не может хранить данные JSON вышеупомянутого типа, то можете ли вы предложить, в какой базе данных лучше всего хранить этот тип ввода?
Как я могу создать таблицу, которая может хранить данные в указанном выше формате JSON на консоли AWS
На консоли AWS вам просто нужно открыть таблицу, нажать «Создать элемент» и просто скопировать / вставить или ввести туда объект JSON.
Да, я пробовал то же самое, но я не вижу, чтобы он сохранил значения, ожидаемые от него (это формат в вопросе)




DynamoDB может хранить данные JSON, а также формат данных, который вы хотите вставить.
Есть два метода, которые можно использовать для форматирования данных при вставке в DynamoDB, а также при извлечении данных из БД в желаемый метод JSON.
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/Converter.html
Это следующие методы: input и output.
Для этого я предоставил два образца лямбда-кода AWS, надеюсь, это решит вашу проблему.
Следующим способом вы можете преобразовать данные JSON в поддерживаемый DynamoDB формат, а затем вставить его:
const AWS = require('aws-sdk');
//setting the region
AWS.config.update({region: 'ap-south-1'});
// Create the DynamoDB service object
const ddb = new AWS.DynamoDB.DocumentClient();
const getParams = (updatedTasks)=>{
const params = {
TableName: 'todo-application',
Key: {
"userID" : "[email protected]",
},
UpdateExpression: "set tasks = :updatedTasks",
ExpressionAttributeValues:{
":updatedTasks":updatedTasks
},
ReturnValues:"UPDATED_NEW"
};
return params;
}
const dbQuery =(newTask)=>{
let updatedTask = AWS.DynamoDB.Converter.input(newTask, true);
console.info('updated task formatted ',updatedTask);
let params = getParams(updatedTask);
return new Promise((resolve,reject) =>{
ddb.update(params, function(err, data) {
if (err) {
console.info("Error", err);
reject(err);
} else {
console.info("Success", data);
resolve(data.Item)
}
});
});
}
exports.updateTodoJobsOfAUser = async (event) => {
const insertObject = [
{
statement:'learn Dynamo DB', id: 23
},
{
statement:'Learn Serverless Architecture',id:24
}]
const data = await dbQuery(insertObject);
const response = {
statusCode: 200,
body: JSON.stringify(data)
};
return response;
};Вы можете преобразовать данные DynamoDB в формат JSON следующим способом:
const dbQuery =()=>{
return new Promise((resolve,reject) =>{
ddb.get(params, function(err, data) {
if (err) {
console.info("Error", err);
reject(err);
} else {
console.info("Success", data);
resolve(data.Item)
}
});
});
}
exports.getAllTodoJobsOfAUser = async (event) => {
const data = await dbQuery();
const formattedData = AWS.DynamoDB.Converter.output(data, true);
const response = {
statusCode: 200,
body: JSON.stringify(formattedData)
};
return response;
};Рад помочь
попробуйте использовать атрибут карты внутри атрибута списка
list дает вам массив, а map дает вам объект пар ключ-значение
Пример поможет ОП понять, что вы имеете в виду.
Вы пробовали
List attribute?