我正在尝试使用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
}
};
答案 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
}
};