2016-06-22 4 views
1

DynamoDB에서 Lambda AWS를 사용하여 데이터를 가져옵니다. 나는 안드로이드 응용 프로그램에서 람다로 보내 내 매개 변수에 매개 변수를 추가하려고 :Node.js- DynamoDB AWS- 파라미터 검색

if (typeof event.high_lat != "undefined") { 
      params.ExpressionAttributeValues = event.high_lat; 
     } 

을하지만 오류가 발생합니다 :

[InvalidParameterType: Expected params.ExpressionAttributeValues to be a map] 
    message: 'Expected params.ExpressionAttributeValues to be a map', 

누구나 그것을 해결하는 방법을 알고?

내 전체 코드 : 안드로이드 응용 프로그램에서 전송 된 코드의

var AWS = require('aws-sdk'); 
var db = new AWS.DynamoDB(); 

exports.handler = function(event, context) { 


    var params = { 
    TableName: "Events", //"StreamsLambdaTable", 
    ProjectionExpression: "ID, description, endDate, imagePath, locationLat, locationLon, #nm, startDate, #tp, userLimit", //specifies the attributes you want in the scan result. 
    FilterExpression: "locationLon between :lower_lon and :higher_lon and locationLat between :lower_lat and :higher_lat", 
    ExpressionAttributeNames: { 
     "#nm": "name", 
     "#tp": "type", 
    }, 

    ExclusiveStartKey: { 
     "ID": {"S": event.LastEvaluatedKey} 
    }, 

    ExpressionAttributeValues: { 
     ":lower_lon": {"N": event.low_lon}, 
     ":higher_lon": {"N": event.high_lon}, 
     ":lower_lat": {"N": event.low_lat} 
    } 
}; 


if (typeof event.high_lat != "undefined") { 
      params.ExpressionAttributeValues = event.high_lat; 
     } 


    db.scan(params, function(err, data) { 
    if (err) { 
     console.log(err); // an error occurred 
     } 
    else { 
     data.Items.forEach(function(record) { 
      console.log(
       record.name.S + ""); 
     }); 
     context.succeed(data.Items); 


     } 
    }); 
}; 

예 : 단일 값으로지도 전체 ExpressionAttributeValues ​​멀리 불고

{ 
    "low_lon": "16", 
    "high_lon": "17", 
    "low_lat": "52", 
    "high_lat": "53" 
} 

답변

1

. 위 코드에서 ExpressionAttributeValues ​​맵에 값을 추가하는 방법을 확인하기 만하면됩니다.

params.ExpressionAttributeValues = event.high_lat; 

이 사람 :이

변경

params.ExpressionAttributeValues[":higher_lat"] = {"N": event.high_lat}; 
+0

지금 내가 이러한 오류는 {[ValidationException는 : ExpressionAttributeValues는 잘못된 키가 포함되어 구문 오류를; 키 : "high_lat"] 메시지 : 'ExpressionAttributeValues에 잘못된 키가 있습니다 : 구문 오류; key : "high_lat" ', –

+0

아 죄송합니다. 구문이 약간 누락되었습니다. 내 업데이트 답변을 참조하십시오. –

+0

더 나은,하지만 지금은 얻을 : [ValidationException : 잘못된 FilterExpression : 식에 사용 된 식 특성 값이 정의되지 않은; 속성 값 : : higher_lat] message : '유효하지 않은 FilterExpression : 표현식에 사용 된 표현식 속성 값이 정의되지 않았습니다. attribute value : : higher_lat ', –