javascript - AWS DynamoDB 扫描操作适用于类级别扫描,但不适用于文档写入器扫描
问题描述
以下参数使用扫描操作返回预期结果dynamoDB.scan(params, function);
const dynamoDB = new AWS::DynamoDB();
let params = {
TableName: ACCOUNT_USAGE_TABLE,
ExpressionAttributeValues: {
":start_date": {
S: new Date(event.start_date).toISOString(),
},
":end_date": {
S: new Date(event.end_date).toISOString()
}
},
ExpressionAttributeNames: {
"#usage_date": "date",
},
FilterExpression: "#usage_date BETWEEN :start_date AND :end_date",
ExclusiveStartKey: event.LastEvaluatedKey
};
但是在使用 with 时,前面的参数失败了dynamoDB.documentClient.scan(params, function)
,
ValidationException: Invalid FilterExpression: Incorrect operand type for operator or function; operator or function: BETWEEN, operand type: M
关于为什么的任何想法?
解决方案
当然,答案是直接盯着我的脸。以防其他人碰到它并且没有立即看到它。
javascript 中的 DynamoDB 文档客户端使用 javascript 类型,因此看到了start_date
and end_date
objects( [object]
) aka operand type: M
。
我所要做的就是ExpressionAttributeValues
改变
ExpressionAttributeValues: {
":start_date": new Date(event.start_date).toISOString(),
":end_date": new Date(event.end_date).toISOString()
},
瞧,它有效。