【发布时间】:2016-06-20 17:21:34
【问题描述】:
我尝试使用 lambda AWS 从 DynamoDB 中获取满足条件的前 10 个项目。我试图使用 Limit 参数,但它是(基于该网站)
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#scan-property
“要评估的最大项目数(不一定是匹配项目的数量)”。
如何获得满足我条件的前 10 个项目?
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",
},
ExpressionAttributeValues: {
":lower_lon": {"N": event.low_lon},
":higher_lon": {"N": event.high_lon}, //event.high_lon}
":lower_lat": {"N": event.low_lat},
":higher_lat": {"N": 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);
}
});
};
【问题讨论】:
-
你试过什么?你的代码是什么样的?您收到任何错误消息吗?
-
我的代码没有问题。我只是不知道如何解决这个问题。以防万一我把它包括在我的问题中。
-
我试过了,它评估前 10 个项目并返回少于 10 个(仅满足条件的项目)
-
您要么需要无限制地执行查询,并使用前10个结果并忽略其余结果,要么如果第一个结果集小于10,则使用
LastEvaluatedKey获取更多结果。 -
什么更有效率?我大概会存储数千个项目。
标签: node.js amazon-web-services amazon-dynamodb aws-lambda