- InvalidParameterType:私は2個のエラーを持っている
ar AWS = require('aws-sdk'); var db = new AWS.DynamoDB(); exports.handler = function(event, context) { var params = { TableName: "StreamsLambdaTable", ProjectionExpression: "price", //specifies the attributes you want in the scan result. FilterExpression: "price between :lower and :higher", // ExpressionAttributeNames: { // "#yr": "year", // }, ExpressionAttributeValues: { ":lower": 9, ":higher": {"N": 13} } }; db.scan(params, function(err, data) { if (err) { console.log(err); // an error occurred } else { console.log(data.Item.name.S); // successful response context.done(null,{"Result": "Operation succeeded."}); //res.send(data.name); } // return next(); }); };
しかし、期待のparams .ExpressionAttributeValues [ '下部']構造
- InvalidParameterTypeすべき:期待params.ExpressionAttributeValues [ ':高く']。N列すべき]
は、私はあなたのコード内で見ることができるように:)(2つのdifffrentアプローチを試してみました
ExpressionAttributeValues: {
":lower": 9,
":higher": {"N": 13}
}
が、それらのどちらも動作します。
編集:
もう1つ問題があります。私はそれらすべての価格を手に入れたい。私は、そのコードを試してみました:
data.Items.forEach(function(record) {
console.log(
record.price + " dadada");
});
しかし、私は得る:
2016-06-14T20:33:23.915Z 3ce248c7-326f-11e6-855c-57839aedb817 [object Object] dadada
2016-06-14T20:33:23.915Z 3ce248c7-326f-11e6-855c-57839aedb817 [object Object] dadada
EDIT 2:
Soolved。 record.priceをrecord.price.Nに変更しました。
構文:higher'は正しいです。あなたが受け取っているエラーメッセージは、 'price'があなたのテーブルに文字列として格納されていて、期待通りの数字ではないことを示唆しています。 – chukkwagon
@chukkwagon実際には構文が正しくなく、文字列として格納されていません。値を文字列として渡し、数値であることをDynamoDBに示す "N"でタイプを指定します。 –
@マークB - あなたが正しいです、彼の元の投稿の13周り。 – chukkwagon