问题描述
我似乎无法通过lambda查询我的dynamodb。错误消息显示: 错误无法扫描表格。错误JSON: { “ message”:“无效的FilterExpression:未定义在表达式中使用的表达式属性值;属性值::coloursavailable”, 我的代码如下:
async function dispatch(intentRequest,callback) {
const aws = require('aws-sdk');
aws.config.update({region: 'xxx'});
var ddb = new aws.DynamoDB();
var ddbDocclient = new aws.DynamoDB.DocumentClient()
async function getCost(colour,size) {
var params ={
TableName : "XXX",ProjectionExpression:"Cost",FilterExpression: "coloursavailable = :coloursavailable and sizesavailable = :sizesavailable",ExpressionAttributeValues:{ ":coloursavailable" : colour,":sizesavailable": size}
}
return new Promise(resolve =>{
ddbDocclient.scan(params,onScan)
function onScan(err,data) {
if (err) {
console.error("Unable to scan the table. Error JSON:",JSON.stringify(err,null,2));
} else {
data.Items.forEach(function(item) {
resolve(item.Cost);
});
}
}
})
}
谢谢!
解决方法
在不指定特定哈希键的情况下,不能对表使用查询方法。改为使用扫描方法。因此,如果您替换:
x = tab.query() 与
x = tab.scan() 我把桌子上的所有物品都拿了。