亚马逊dynamodb fiter表达式返回错误

时间:2016-05-19 12:19:20

标签: javascript amazon-web-services amazon-dynamodb amazon-dynamodb-streams

iam使用Web控制台在amazon dynamoDB中创建了一个表。这是添加一些数据后的表结构。

时间戳| userid |文本

101 | manaf | haaaai

102 | manaf |喂

我需要在两个res限制之间获取数据。

这是我在js中的代码。

var AWS = require("aws-sdk");

AWS.config.update({
  region: "regionName",
});

var docClient = new AWS.DynamoDB.DocumentClient()
var table = "testTable";
var params = {
    TableName: table,
    FilterExpression :['userid = :id','res >= :val1','res <= :val2'],
    ExpressionAttributeValues : {':id' : 'manaf','res':101, 'res':102} 
};

docClient.scan(params, function(err, data) {
   if (err) console.log(err);
   else console.log(data);
});

但是我得到了这样的错误。

{ [InvalidParameterType: Expected params.FilterExpression to be a string]
  message: 'Expected params.FilterExpression to be a string',
  code: 'InvalidParameterType',
  time: Thu May 19 2016 17:24:57 GMT+0530 (IST) }

如何在dynamo db scan方法中添加多个过滤器选项?

1 个答案:

答案 0 :(得分:1)

您的FilterExpression是一个列表。您必须使用dynamos运算符(OR,AND)提供字符串并连接元素。 例如:

FilterExpression: "x = 1 AND y = 2"

来自文档:

  

FilterExpression的语法与   ConditionExpression。另外,FilterExpression使用相同的   比较器,函数和逻辑运算符作为ConditionExpression。   了解更多信息

您可能还需要替换键和值以避免错误“属性是保留关键字”; 有关详细信息,请参阅文档:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html