以下是DynamoDB JSON對象上的AWS lambda中的node.js查詢。 UserID是沒有排序鍵的主鍵。 GeoHash是一個輔助鍵,索引名稱爲「GeoHash-index」。 調用成功,沒有錯誤,但不會導致返回任何內容。下面的測試數據可能是錯誤的,因爲它沒有提供任何與索引名稱的連接,但我是AWS/noSQL的新手,並且有點迷路。AWS Lambda查詢二級索引
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": "dpz886gb0tb0",
"Radius": 2,
"Timestamp": 1472601493180,
"UserID": "User1"
}
的地理散列字符串應該相互匹配。思考?
編輯 用這種方法沒有成功要麼
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));
});
}
還有來自LAMBDA一個 「空」 的答覆... docClient.getItem({ 表名:表名, 鍵:{ 用戶名:{S: 「用戶2」}, }} , 這將給我一個價值然而 – Iorek