使用NodeJS将新对象附加到DynamoDB中的JSON数组

编程入门 行业动态 更新时间:2024-10-19 11:39:25
本文介绍了使用NodeJS将新对象附加到DynamoDB中的JSON数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在使用JSON结构存储一个人的详细信息。基本上,名称,电话,registeredTimestamp等将是其他属性,主键将是电子邮件地址。

I am using a JSON structure to store details of a person. Basically name, phone, registeredTimestamp etc., will be other attributes, and Primary key will be the email address.

markedLocations,受访位置,searchHistory和推荐是列表或地图正如AWS所称。它将包含许多JSON对象。

markedLocations, visitedLocations, searchHistory and recommendation are the lists or Map as AWS calls it. It will contain many JSON objects.

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应该看起来像-

From the app, if the user visits a new location, I need to add a new JSON Object to the markedLocations. So the markedLocations should look something like-

"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 链接

在AWS dynamoDB中更新JSON数组链接

updating a JSON array in AWS dynamoDB link

使用Node Js在Dynamo数据库中更新集合链接

Updating a Set in Dynamo db using Node Js link

如何使用nodejs更新dynamoDB中的项目? 链接

how to update item in dynamoDB using nodejs? link

并检查了AWS文档中的 UpdateItem API 。我没有发现与我的问题/疑问有关的任何东西。

And checked AWS docs for UpdateItem API. I didn't find anything relevant to my problem/doubt.

请告诉我是否有办法在NodeJS中用新的JSON对象附加JSON数组?我无法继续执行相同的操作。

Please can you tell me if there is a way to append the JSON array with a new JSON object in NodeJS? I am not able proceed on how to implement the same.

OR

我应该为每个数组创建一个单独的表,并将电子邮件作为主键,将时间戳作为排序键然后继续吗?

Should I create separate table for each Array and have email as primary key and timestamp as sort key and proceed?

PS:我是DynamoDB的新手,我与MongoDB较早,那里有使用JSON数组和对象的方法。

PS: I am new to DynamoDB, I've worked with MongoDB earlier and there are ways to work with JSON arrays and objects there. Unable to find a way here.

推荐答案

使用 list_append()和 if_not_exists() 一起在 UpdateExpression 附加到可能不存在的列表列:

Use list_append() and if_not_exists() together in an UpdateExpression to append to a potentially non-existent list column:

var AWS = require('aws-sdk') var DB = new AWS.DynamoDB.DocumentClient() function appendMarkedLocation (personId, location) { return DB.update({ TableName: 'people', Key: { id: personId }, ReturnValues: 'ALL_NEW', UpdateExpression: 'set #markedLocations = list_append(if_not_exists(#markedLocations, :empty_list), :location)', ExpressionAttributeNames: { '#markedLocations': 'markedLocations' }, ExpressionAttributeValues: { ':location': [location], ':empty_list': [] } }).promise() } appendMarkedLocation('somePeronId', { latitude: '22.11', longitude: '22.55', name: 'Ocean', description: 'Ocean', placeid: '32423423', image: 'url/icean.png' }).then(console.log)

更多推荐

使用NodeJS将新对象附加到DynamoDB中的JSON数组

本文发布于:2023-11-26 20:51:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1635148.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   对象   NodeJS   JSON   DynamoDB

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!