在DynamoDB NodeJS中查询的OR条件表达式

时间:2018-04-15 00:37:37

标签: node.js amazon-web-services amazon-dynamodb

我正在尝试使用FilterExpression从DynamoDb获取条目列表。如果至少有一个语句为TRUE,我想返回值。 但由于某些原因看起来像AND是一个默认的条件运算符,我的结果是空的。如何在NodeJS中将默认条件操作更改为OR?

            params = {
                TableName: '......',
                IndexName : 'user_id-index',
                KeyConditionExpression: 'user_id = :user_id',
                FilterExpression: 'contains (email, :key) OR contains (name, :key)',
                ExpressionAttributeValues: {
                    ":user_id": userId,
                    ":key": item_to_search
                }
            };

1 个答案:

答案 0 :(得分:4)

您的问题是NAME是DynamoDB中的reserved word。因此,您必须使用ExpressionAttributeNames

params = {
  TableName: '......',
  IndexName: "user_id-index",
  KeyConditionExpression: "user_id = :user_id",
  FilterExpression: "contains (email, :key) OR contains (#name, :key)",
  ExpressionAttributeNames: {
    "#name": "name"
  }
  ExpressionAttributeValues: {
    ":user_id": userId,
    ":key": item_to_search
  }
};