0

I am learning dynamodb and I am trying how to fetch items with status 0 and 1 but when i write the below query, it is throwing error "Error ValidationException: Invalid FilterExpression: Syntax error; token: ":user_status_val", near: "IN :user_status_val". Could any one please help in fixing this issue.

const checkUserExists = (req) => {
    return new Promise((resolve,reject) =>{
        var searchParams = {};
        if(req.body.email != ""){
             searchParams = {
                FilterExpression : "#email = :e AND #user_status IN :user_status_val",
                 ExpressionAttributeNames: {
                    "#user_status": "status",
                    "#email" : "email",
                  },
                ExpressionAttributeValues: {
                     ':user_status_val' : req.body.status,
                     ':e' : req.body.email,
                    },
            }
        }
        var params = {
                Select: "COUNT",
                TableName: 'register'
            };
        var finalParams = {...searchParams, ...params}
            DynamoDB.scan(finalParams, function(err, data) {
              if (err) {
                console.log("Error", err);
              } else {
                console.log(data);
                //res.send(data);
                return resolve(data);
              }
            });
    });
}
Ermiya Eskandary
  • 15,323
  • 3
  • 31
  • 44
  • The `IN` keyword is used to compare against an enumerated list of values with a maximum size of 100, separated by commas. `:user_status_val` is equal to `req.body.status` so given that `req.body.status` is an array of values, you will need to form the `FilterExpression` dynamically. You can't just pass the array. – Ermiya Eskandary May 21 '22 at 11:48
  • Does this answer your question? [How to use “IN” statement in FilterExpression using array - dynamodb](https://stackoverflow.com/questions/40283653/how-to-use-in-statement-in-filterexpression-using-array-dynamodb) – Ermiya Eskandary May 21 '22 at 11:49
  • 1
    Hi @ErmiyaEskandary, Thanks above suggested link helped out in solving the issue, after many attempts.Thanks :-) – Nishanth Reddy May 22 '22 at 05:05

0 Answers0