由于错误的filterexpression,我无法从AWS Lambda查询我的dynamodb表?

问题描述

我似乎无法通过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() 我把桌子上的所有物品都拿了。