2016-10-29 4 views
0

분명히 뭔가 빠져있는 것 같지만 설명서는 DynamoDB, 특히 NodeJS에서 약간 혼란 스럽습니다 (그러나 Java는 많이 보았습니다!).NodeJS를 통해 DynamoDB 인스턴스에 객체 저장

나는 꽤 많은 검색을 해왔고 이전 SDK에 관한 질문 만 찾았으므로이 질문은 중복되지 않습니다.

DynamoDB 인스턴스에 Javascript 객체를 저장하려고합니다. 내가 얻는 오류와 내가 사용하고있는 코드는 아래에 요약되어있다.

오류 :

Unable to add item. Error JSON: { 
    "message": "One or more parameter values were invalid: 
     Type mismatch for key File expected: S actual: M", 
    "code": "ValidationException", 
    "time": "2016-10-29T19:36:02.317Z", 
    "requestId": [removed], 
    "statusCode": 400, 
    "retryable": false, 
    "retryDelay": 0 
} 

코드 :

var aws = require('aws-sdk'); 
var docClient = new aws.DynamoDB.DocumentClient({ 
    "accessKeyId": AWS_ACCESS_KEY_ID, 
    "secretAccessKey": AWS_SECRET_ACCESS_KEY, 
    region: 'us-east-1', 
    endpoint: "https://dynamodb.us-east-1.amazonaws.com" 
}); 
var tableName = AWS_TABLE_NAME; 
var params = { 
    TableName: tableName, 
    Item: { 
     ProjID: projID, 
     File: { 
      name: fileName, 
      url: fileUrl 
     } 
    } 
}; 
docClient.put(params, function (err, data) { 
    if (err) { 
     console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2)); 
    } else { 
     console.log("Added item:", JSON.stringify(data, null, 2)); 
    } 
    callback(true); 
}); 

다시 한번, 나는 그것이 매우 간단한 문제가 확실 해요 - 그냥 아주 그은으로 업데이트 나 좀 도와 어떤 문서를 발견하지 않았습니다 .

미리 도움을 주셔서 감사합니다.

답변

0

테이블의 스키마에 파일을 등록 하시겠습니까? 그것이 있고 String으로 정의 된 경우, 오류는 맵을 문자열 속성에 넣으려고한다는 것을 나타냅니다.

DynamoDB는 문자열과 숫자 키만 지원하므로 디자인을 다시 방문해야합니다. 아마도 File 정보를 키 문자열로 저장 한 다음 필요한 경우 별도의 속성으로 맵으로 확장 할 수 있습니다.

+0

도움을 주셔서 감사합니다! Javascript Object를 문자열로 변환 한 다음 Object로 다시 파싱했습니다. –

관련 문제