【发布时间】:2017-07-25 12:06:30
【问题描述】:
下面是我的 Lambda 函数的代码。我无法根据时间戳查询行。我的计划是以毫秒为单位获取从当前时间前 5 秒到当前时间的所有行。 TimeMillis(Number) 以毫秒为单位存储当前时间,它是主键,范围键是 PhoneId(String)。请帮我解决这个问题或者有什么办法可以解决这个问题?
我无法获得输出,它正在抛出错误。
'use strict';
var AWS = require("aws-sdk");
AWS.config.update({
region: "us-east-1",
});
var docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = function(event, context, callback) {
var timemillis = new Date().getTime();
var timemillis1 = timemillis - 5000;
var params = {
TableName: 'Readings',
KeyConditionExpression: "TimeMillis = :tm and TimeMillis BETWEEN :from AND :to",
ExpressionAttributeValues: {
":tm" : "TimMillis",
":from" : timemillis1,
":to" : timemillis
}
};
docClient.query(params, function(err, data) {
if(err){
callback(err, null);
}
else{
callback(null, data);
}
});
};
这是我的 DynamoDB 表图像。
【问题讨论】:
-
您遇到什么错误??
-
错误显示为:
_"errorMessage": "KeyConditionExpressions must only contain one condition per key"_ -
如果我用以下代码替换上面的代码:
KeyConditionExpression: "TimeMillis BETWEEN :from AND :to", ExpressionAttributeValues: { ":from" : timemillis1, ":to" : timemillis }。显示的错误是:**"errorMessage": "Query key condition not supported"** -
是否有任何解决方案可以通过对主键使用 BETWEEN 条件(在本例中为 TimeMillis)来使用和获取行,或者您能否提出任何建议如果可能的话,如何克服这种情况的替代解决方案?
-
我已经添加了答案
标签: node.js amazon-web-services amazon-dynamodb aws-lambda