在NodeJS中使用DynamoDB向JSON数组追加一个新对象。
在NodeJS中使用DynamoDB向JSON数组追加一个新对象。
我正在使用JSON结构来存储一个人的详细信息。基本上,姓名、电话、注册时间戳等将是其他属性,主键将是电子邮件地址。
markedLocations、visitedLocations、searchHistory和recommendation是列表或AWS称之为Map的对象。它们将包含许多JSON对象。
JSON结构如下:
{
"name":"Mama Miya",
"phone":"9383883223",
"registeredTimestamp":"some-time",
"lastActiveTimestamp":"some-time",
"signinType":"facebook",
"additionalSigninData":{
"key1":"value1",
"key2":"value2"
},
"markedLocations":[
{
"latitude":"77.33",
"longitude":"12.33",
"name":"Home",
"description":"my new home",
"placeid":"55334433",
"image":"url/abc.png"
}
]
}
如果用户从应用程序访问一个新位置,我需要向markedLocations添加一个新的JSON对象。
因此,markedLocations应该如下所示:
"markedLocations":[
{
"latitude":"77.33",
"longitude":"12.33",
"name":"Home",
"description":"my new home",
"placeid":"55334433",
"image":"url/abc.png"
},{
"latitude":"22.11",
"longitude":"22.55",
"name":"Ocean",
"description":"Ocean",
"placeid":"32423423",
"image":"url/icean.png"
}
]
代码/架构:
var item = {
'email': {'S': req.body.email},
'phone': {'S': req.body.phone},
'registeredTimestamp': {'S': req.body.registeredTimestamp},
'lastActiveTimestamp': {'S': req.body.lastActiveTimestamp},
'signinType': {'S': req.body.signinType},
'version': {'S': req.body.version},
'markedLocations': {'L': req.body.markedLocations}
};
我查阅了以下内容:
- 在DynamoDB中如何使用Java追加列表字段的元素 link
- 在AWS DynamoDB中更新JSON数组 link
- 使用Node.js更新DynamoDB中的Set link
- 如何使用Node.js在DynamoDB中更新项目 link
- 并且查阅了AWS文档的UpdateItem API。我没有找到与我的问题/疑问相关的内容。
请问是否有办法在Node.js中将JSON数组追加到新的JSON对象中?我无法确定如何实现这一点。
或者,我应该为每个数组创建单独的表格,并以电子邮件为主键,时间戳为排序键,然后继续吗?
附注:我对DynamoDB还不熟悉,之前我使用过MongoDB,在那里有办法处理JSON数组和对象。在这里找不到方法。