2

내 목표는 dynamo.getItem 메서드에서 DynamoDB 요청을 재귀 적으로 구문 분석하는 것입니다.DynamoDB 요청 구문 분석

불행히도 Node.js 용 DynamoDB SDK에서 비슷한 방법을 찾을 수 없습니다.

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html

나는 결과에서 유형을 제거하는 효과적인 방법을 찾고 있어요. DynamoDB에서 키는 "N", "S", "M"과 같은 속성의 한 문자 이름입니다. 이러한 유형의

설명 :

N means DynamoDB Number type 
S means dynamoDB String type 
M means DynamoDB Map type (object with properties) 

현재 JSON 구조는 다음과 같습니다

{ 
    "id": "4", 
    "number": "1", 
    "data": { 
     "aaa": "AAA", 
     "lv2": {  
      "lv3": { 
       "ccc": "111" 
      }, 
      "bbb": "BBB" 
     } 
    } 
} 

:

{ 
    "id":{ 
    "N":"4" 
    }, 
    "number":{ 
    "N":"1" 
    }, 
    "data":{ 
    "M":{ 
     "aaa":{ 
     "S":"AAA" 
     }, 
     "lv2":{ 
     "M":{ 
      "lv3":{ 
      "M":{ 
       "ccc":{ 
       "N":"111" 
       } 
      } 
      }, 
      "bbb":{ 
      "S":"BBB" 
      } 
     } 
     } 
    } 
    } 
} 

나는 짧은 버전으로 위의 JSON 매핑하는 자바 스크립트 기능을 필요 일반적으로 자바 스크립트 질문이지만, DynamoDB 경험이있는 사람들은 ho를 알고 있을지도 모릅니다. 이 문제를 다루기 위해

아이디어가 있으십니까?

답변

2

당신이 노드를 사용하는 경우는, 나를 위해 큰 일을 발전기 - 투 - JSON 정렬 화 및 비 정렬 화 않는 멋진 패키지있다 : 객체의

https://www.npmjs.com/package/dynamodb-marshaler

기본 마샬링을

객체의
var AWS = require('aws-sdk'); 
var marshalItem = require('dynamodb-marshaler').marshalItem; 

AWS.config.region = 'us-west-2'; 
var dynamoDb = new AWS.DynamoDB(); 

dynamoDb.putItem({ 
    TableName: 'users', 
    Item: marshalItem({username: 'nackjicholson'}) // {username: {S: 'nackjicholson'}} 
}); 

기본 비 정렬 화

,
var AWS = require('aws-sdk'); 
var unmarshalItem = require('dynamodb-marshaler').unmarshalItem; 

AWS.config.region = 'us-west-2'; 
var dynamoDb = new AWS.DynamoDB(); 

var data = dynamoDb.scan({ 
    TableName: 'users' 
}, function(err, data) { 
    // data.Items = [{username: {S: 'nackjicholson'}] 
    var items = data.Items.map(unmarshalItem); 
    console.log(items); // [{username: 'nackjicholson'}] 
}); 
0

이 질문에 대한 답변은 매우 늦기 때문에 앞으로 다른 사람들에게 도움이되기를 바랍니다.

AWS는 DynamoDb 용 스키마 기반 라이브러리를 제공하며 데이터 맵퍼, 데이터 맵퍼 주석, 프로젝션 표현식, 데이터 마샬링 및 언 마셜링을 지원합니다.

Amazon DynamoDB DataMapper For JavaScript

샘플 코드 조각

import { 
    attribute, 
    autoGeneratedHashKey, 
    rangeKey, 
    table, 
    versionAttribute, 
} from '@aws/dynamodb-data-mapper-annotations'; 

@table('my_table') 
class MyDomainClass { 
    @autoGeneratedHashKey() 
    id: string; 

    @rangeKey({defaultProvider:() => new Date()}) 
    createdAt: Date; 

    @versionAttribute() 
    version: number; 

    @attribute() 
    toggle?: boolean; 

    @attribute({memberType: 'String'}) 
    tags?: Set<string>; 

    // This property will not be saved to DynamoDB. 
    notPersistedToDynamoDb: string; 
} 

// fetch an object 
const toGet = new MyDomainClass(); 
toGet.id = 'ID_TO_FETCH'; 
const fetched = await mapper.get(toGet); 
관련 문제