gpt4 book ai didi

java - 如何在 DynamoDB 中存储对象数组

转载 作者:行者123 更新时间:2023-12-04 11:46:30 25 4
gpt4 key购买 nike

我知道如何在以下类型的 DynamoDB 中插入项目

例如:
{
"id": "10021",
“应用程序名称”“测试应用程序”
}

但我想插入对象数组,如下例所示:

例如:

{
"testArray": [
{ "id" : "testID",
"applicationName" : "Myapp"
},
{
"id" : "testID1",
"applicationName" : "Myapp123"
} ]}

如果 Dynamo DB 不能存储上述类型的 JSON 数据,那么您能否建议哪个 DB 更适合存储这种类型的输入..?

最佳答案

DynamoDB 可以存储 JSON 数据,也可以存储您希望插入的数据格式。
有两种方法可用于在插入 DynamoDB 时格式化数据以及将 DB 数据检索到所需的 JSON 方法中。
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/Converter.html
这些方法是:inputoutput .

为此,我分享了两个 AWS lambda 代码示例片段,希望这能解决您的问题。

您可以通过以下方式将 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" : "anandujjwal13@gmail.com",
},
UpdateExpression: "set tasks = :updatedTasks",
ExpressionAttributeValues:{
":updatedTasks":updatedTasks
},
ReturnValues:"UPDATED_NEW"
};
return params;
}

const dbQuery =(newTask)=>{
let updatedTask = AWS.DynamoDB.Converter.input(newTask, true);
console.log('updated task formatted ',updatedTask);
let params = getParams(updatedTask);
return new Promise((resolve,reject) =>{
ddb.update(params, function(err, data) {
if (err) {
console.log("Error", err);
reject(err);
} else {
console.log("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.log("Error", err);
reject(err);
} else {
console.log("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;
};


乐于帮助

关于java - 如何在 DynamoDB 中存储对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51087022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com