다음은 dynamoDB JSON 객체의 AWS 람다에서 node.js 쿼리입니다. UserID는 정렬 키가없는 기본 키입니다. GeoHash는 색인 이름이 "GeoHash-index"인 보조 키입니다. 호출은 오류없이 성공하지만 아무 것도 반환되지 않습니다. 아래의 테스트 데이터는 인덱스 이름에 아무런 연결도 제공하지 않으므로 잘못되었지만 AWS/noSQL을 처음 사용하고 조금 손실되었습니다. 람다 테스트 데이터AWS 람다 보조 인덱스를 쿼리
{
"GeoHash": "dpz886gb0tb0",
"Radius": 2,
"Timestamp": 1472601493180,
"UserID": "User1"
}
인 경우
var AWS = require('aws-sdk');
var docClient = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = function(event,context,callback) {
console.log(JSON.stringify(event, null, ' '));
var tableName = "table1";
// getItem
docClient.getItem({
TableName: tableName,
IndexName: "GeoHash-index",
KeyConditionExpression: "GeoHash = :geohash",
ExpressionAttributeValues: {":geohash": "dpz886gb0tb0"}
}),
function(err,data){
if(err){
callback(err);
} else {
callback(null,data);
}
}
};
는 geohash와 문자열은 서로 일치해야합니다. 생각?
편집 이 방법 없음 성공하지 중 하나
var AWS = require('aws-sdk');
var docClient = new AWS.DynamoDB({apiVersion: '2012-08-10'});
exports.handler = function index(event, context, callback) {
var params = {
TableName: "LocationAware1",
IndexName: "GeoHash-index",
KeyConditionExpression: "GeoHash = :geohash",
ExpressionAttributeValues: {
":geohash": {'S': 'dpz886gb0tb0'}
},
};
docClient.query(params, function(err, data) {
if (err)
console.log(JSON.stringify(err));
else
console.log(JSON.stringify(data));
});
}
아직도 람다에서 "널 (null)"응답이 ... docClient.getItem ({ TABLENAME : TABLENAME, 키 : { 사용자 ID : {S : "사용자 2"}, } }, 이 의지 그러나 나에게 가치를 돌려 주라. – Iorek