【问题标题】:Amazon Lex and DynamodDB - can't update existing itemAmazon Lex 和 DynamodDB - 无法更新现有项目
【发布时间】:2020-02-08 13:33:14
【问题描述】:

我正在尝试从表格中获取特定项目。

我的 DynamoDB 表名是 table,我有:

Name PK | Number<br/>
S: Juan |  S: #####

当我尝试在 Lambda 中运行时,当它确实存在一个具有该名称的项目时,我没有得到任何项目......知道为什么会这样吗?

AWS = require("aws-sdk"),
          DDB = new AWS.DynamoDB({
              region: "REGION",
          }),
          lookup_name_str = name //From Intent variable,
          params = {
              TableName: "table",
              KeyConditionExpression: "name = :v1",
              ExpressionAttributeValues: {
                ":v1":{
                    "S": lookup_name_str
                }
            },
              FilterExpression: 'contains(nomColaborador,:v1)',
              ProjectionExpression: "Number"
          }; 
      
      console.log(params);
      var docClient = new AWS.DynamoDB.DocumentClient();
      docClient.scan(params, function(err, data){
          if(err){
              throw err;
          }
          
          if(data.Items && data.Items[0] && data.Items[0].Number){
              console.log("There is a Name with that number");
              console.log(data.Items[0]);
              my_response.statusCode = 200;
              my_response.body = {
                  "sessionAttributes": {
                      "extension_str": data.Items[0].Number.S,
                      "nomColaborador": event.currentIntent.slots.Name
                  },
                  "dialogAction":{
                      "type": "Close",
                      "fulfillmentState": "Fulfilled",
                      "message": {
                          "contentType": "PlainText",
                          "content": data.Items[0].Number.S
                      }
                  }
              };

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-dynamodb amazon-lex dynamodb-queries


    【解决方案1】:

    这里的主要问题是你正在做一个scan。 KeyConditionExpression 不是扫描请求的参数。如果您要通过键请求单个项目,则要使用getItem。如果您需要通过分区键和可选的排序键查询数据,您应该使用query。

    话虽如此,当您进行扫描或对查询进行过滤时,您确实需要确保对数据进行分页。您经常会发现您收到的响应中没有数据,而是一个寻呼键来拨打另一个电话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2016-10-21
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多