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',
誰もがそれを解決する方法を知っていますか?
私の全体のコード:Androidアプリから送信されたコードの
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);
}
});
};
例:
{
"low_lon": "16",
"high_lon": "17",
"low_lat": "52",
"high_lat": "53"
}
今私は、このようなエラーを取得:{[にValidationException:ExpressionAttributeValuesは無効なキーが含まれています:構文エラー。キー: "high_lat"] メッセージ: 'ExpressionAttributeValuesに無効なキーが含まれています:構文エラー。キー: "high_lat" '、 –
ああ、申し訳ありませんが、私は少し構文を逃した。私の更新された答えを見てください。 –
良いですが、今私は取得:[ValidationException:無効なFilterExpression:式で使用される式の属性値が定義されていません。属性値::higher_lat] メッセージ: '無効なFilterExpression:式で使用されている式属性値が定義されていません。属性値:: higher_lat '、 –