在NodeJS中使用DynamoDB向JSON数组追加一个新对象。

7 浏览
0 Comments

在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数组和对象。在这里找不到方法。

0