itsource

노드를 사용하여 DynamoDB의 JSON 어레이에 새 개체 추가JS

mycopycode 2023. 4. 2. 10:25
반응형

노드를 사용하여 DynamoDB의 JSON 어레이에 새 개체 추가JS

JSON 구조를 사용하여 인물의 세부사항을 저장합니다.기본적으로 이름, 전화, registeredTimestamp 등이 기타 속성이 되며 프라이머리 키는 이메일주소가 됩니다.

marked Locations, visited Locations, search History 및 권장사항은 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"
        }
    ]
}

앱에서 사용자가 새 위치를 방문하면 표시된 위치에 새 JSON 개체를 추가해야 합니다.따라서 표시된 위치는 다음과 같습니다.

"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 배열 업데이트

  • 노드 Js 링크를 사용하여 Dynamo DB의 Set 업데이트

  • nodejs를 사용하여 dynamoDB의 항목을 업데이트하려면 어떻게 해야 합니까?링크

  • 그리고 UpdateItem API에 대한 AWS 문서를 확인했습니다.나는 내 문제/의심과는 관련이 있는 것을 찾지 못했다.

NodeJS에서 JSON 어레이에 새로운 JSON 오브젝트를 추가하는 방법이 있는지 알려 주시겠습니까?어떻게 하면 좋을지 진행이 안 돼요.

또는

각 어레이에 대해 개별 테이블을 생성하여 이메일을 프라이머리 키로 하고 타임스탬프를 정렬 키로 하여 계속 진행해야 합니까?

PS: DynamoDB는 처음입니다.MongoDB는 이전에 작업한 적이 있습니다.JSON 어레이나 오브젝트도 사용할 수 있습니다.여기서 길을 찾을 수 없습니다.

UpdateExpression에서 및 를 함께 사용하여 존재하지 않을 수 있는 목록 열에 추가합니다.

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)

언급URL : https://stackoverflow.com/questions/41400538/append-a-new-object-to-a-json-array-in-dynamodb-using-nodejs

반응형