AWS Amplify lambda函数Rest API查询方法不适用于angular

时间:2020-06-14 09:11:33

标签: angular aws-lambda aws-amplify amplifyjs aws-amplify-cli

我正在使用带有lambda函数的rest api生成rest api,以从AWS中的dynamodb获取数据,这是我的lambda函数方法来获取数据

 app.get(path, function (req, res) {
  var condition = {}

  condition[partitionKeyName] = {
    ComparisonOperator: 'EQ'
  }

  if (userIdPresent && req.apiGateway) {
    condition[partitionKeyName]['AttributeValueList'] = [req.apiGateway.event.requestContext.identity.cognitoIdentityId || UNAUTH];
  } else {
    try {
      condition[partitionKeyName]['AttributeValueList'] = [convertUrlType(req.params[partitionKeyName], partitionKeyType)];
    } catch (err) {
      res.statusCode = 500;
      res.json({
        error: 'Wrong column type ' + err
      });
    }
  }

  let queryParams = {
    TableName: tableName,
    KeyConditions: condition
  }

  dynamodb.scan(queryParams, (err, data) => {
    if (err) {
      res.statusCode = 500;
      res.json({
        error: 'Could not load items: ' + err
      });
    } else {
      res.json(data.Items);
    }
  });
});

这就是我从component.ts文件中的角度使用此方法的方式

import { API } from 'aws-amplify';

  apiName = 'createTicket'; // replace this with your api name.
  path = '/createNewTicket'; // replace this with the path you have configured on your API

 getMyInit = {
    headers: {}, 
    response: true, 
    queryStringParameters: {  // OPTIONAL
      'id': 'KOS-17-117-1'
    }
  }
API.get(this.apiName, this.path, this.getMyInit).then(response => {
      console.log("'tickets' component-> All Tickets Retrieved Successfully!");
      console.log(response)
 }).catch(error => {
      console.log("'tickets' component-> Error in Retreiving All Tickets from server!");
      console.log(error.response)
    });

现在当我使用

dynamodb.scan(queryParams, (err, data) => {
    if (err) {
      res.statusCode = 500;
      res.json({
        error: 'Could not load items: ' + err
      });
    } else {
      res.json(data.Items);
    }
  });

在我的lambda函数中,它成功返回了所有表数据,但是当我使用时,

dynamodb.query(queryParams, (err, data) => {
        if (err) {
          res.statusCode = 500;
          res.json({
            error: 'Could not load items: ' + err
          });
        } else {
          res.json(data.Items);
        }
      });

它不返回任何内容,我想查询具有特定ID或表中其他列的表,我不确定我在这里做错了什么,我想应该是这样

queryStringParameters

getMyInit = {
    headers: {}, 
    response: true, 
    queryStringParameters: {  // OPTIONAL
      'id': 'KOS-17-117-1'
    }
  }

但是它不起作用,我得到了这个错误

“无法加载项目:ValidationException:一个或多个参数 值无效:EQ的参数数目无效 比较运算符”

0 个答案:

没有答案