[英]AWS dynamodb ScanInput ExpressionAttributeValue not working as expected
我写了一个扫描查询来获取像这样的唯一启用的数据
const FilterExpression = 'enabled = :enabled';
const ExpressionAttributeValues = { ':enabled': { 'BOOL': true } };
const scanParameters: ScanInput = {
TableName,
ExclusiveStartKey: cursor ?? undefined,
Limit: Number(filter.limit) ?? undefined,
FilterExpression,
ExpressionAttributeValues,
};
但它不会返回任何值。 当我将 ExpressionAttributeValue 更改为
const ExpressionAttributeValues = { ':enabled': true };
它返回值但不满足 ScanInput 的类型。 抛出这样的错误
“类型 '{ ':enabled': boolean; }' 不可分配给类型 'ExpressionAttributeValueMap'。属性 '':enabled'' 与索引签名不兼容。”我知道的一种解决方案是创建一个新类型并分配值根据但为什么在扫描数据时类型 ScanInput 格式数据不起作用?
您没有提供足够的代码来完全理解您的问题。 我在这里的假设是您正在混淆客户端,这意味着您正在使用 DynamoDB JSON { 'BOOL': true }
为低级客户端定义参数,但实际上您使用的是使用本机 JSON 的文档客户端。
/*
Convert the key JavaScript object you are retrieving to the
required Amazon DynamoDB record. The format of values specifies
the datatype. The following list demonstrates different
datatype formatting requirements:
String: "String",
NumAttribute: 1,
BoolAttribute: true,
ListAttribute: [1, "two", false],
MapAttribute: { foo: "bar" },
NullAttribute: null
*/
请确保您对所使用的客户端使用正确的语法。
尝试:
const params = {
TableName: TableName,
ExpressionAttributeNames: { "#enablee": "enabled"},
FilterExpression: "#enabled = :enabled",
ExpressionAttributeValues: {
":enabled": true
},
};
const data = await ddbDocClient.send(new ScanCommand(params));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.