【问题标题】:DynamoDb Filter expression not working on LambdaDynamoDb 过滤器表达式不适用于 Lambda
【发布时间】:2016-05-21 00:23:03
【问题描述】:

我正在尝试使用 lambda 函数中的多个过滤器表达式值过滤我的扫描结果,但遇到错误。

Lambda 函数:

'use strict';
console.log('Loading function');
var AWS = require("aws-sdk");
var dynamodb = new AWS.DynamoDB();

exports.handler =  (event, context) => {

   var params = {
   TableName : "4298.Dev.Log_OnP.RecruitingDemandOrders",
   FilterExpression: ("#DFC <> Recruiting"
                    ,"#DS = :FI"
                    ,"#ETA = :FA"
                    ),
   ExpressionAttributeNames: {
        "#DS": "demand.status"
        ,"#DFC":"demand.fulfillmentChannel3"
        ,"#ETA":"exportedToATAS"

   },
    ExpressionAttributeValues: {
        ":FA": {"S" : "false"}
        ,":FI":{"S" : "Filled"}
        }

   }

    dynamodb.scan(params, function(err, data) {

        if( err ) {
          console.log('dynamoProcessor-getdemandRecord ERROR' + err);
        } else {

                    for (var i in data.Items) {
            i = data.Items[i];
            console.log(i);
            context.done(null, "Ciao!");
        }
                    }
});

}

错误: 表达式中未使用的 ExpressionAttributeNames 中提供的值:键:{#DS, #DFC}

我写的过滤器表达式是否正确?

【问题讨论】:

    标签: node.js amazon-dynamodb aws-sdk aws-lambda


    【解决方案1】:

    我认为您设置的 FilterExpression 值不正确。它应该是单个字符串,使用与ConditionalExpression 相同的语法。语法定义为here

    试着改成这样:

    FilterExpression: "#DFC <> Recruiting AND #DS = :FI AND ETA = :FA",
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多