Нулевой ответ при запросе DynamoDB - PullRequest
0 голосов
/ 02 июня 2019

Я запрашиваю Dynamodb из лямбда-функции, написанной в node.js env -

Попытка сделать запрос к таблице CurrencyPrice, где столбец Currency имеет значение "BLC".Когда я проверяю свою функцию в лямбда-консоли, - он печатает до второго журнала консоли - «запрашивая DB ConsolePrice» и возвращает NULL-ответ.Он не печатает ни один из следующих двух журналов консоли и не уверен, что он даже подключается к БД.

Кажется, что код вообще не входит в функцию ddb.query() - попытался поместить все регистраторы вэта функция, но ни одна не печатается.

Я попытался проверить всю возможную документацию aws, но не смог понять, почему эта функция не выполняется.

Мой код выглядит примерно так -

var AWS = require ('aws-sdk');
exports.handler = async (event) => 
{ 
  AWS.config.update({region: 'ap-southeast-2'});
  console.log("i am in function");
  // Create DynamoDB service object
  var ddb = new AWS.DynamoDB.DocumentClient();
  var table = 'CurrencyPrice';
  var params = {
    "Select": "ALL_ATTRIBUTES","TableName": "CurrencyPrice",
  };
  console.log("querying DB" + table);
  ddb.query(params, function(err, data) {
    console.log("i am in ddb query");
    if (err) {
      console.error("Unable to query. Error:", JSON.stringify(err, null,2));
    } else {
      console.log(data);   
    }
  });
};

Текущий результат, который я получаю в лямбда-консоли:

Response:
null
Request ID:"XXXX"
Function Logs:
START RequestId: XXX Version: $LATEST
2019-06-02T13:31:55.189Z    XXXX    INFO    i am in function
2019-06-02T13:31:55.331Z    XXXX    INFO    querying DBCurrencyPrice
2019-06-02T13:31:55.390Z    XXXX    INFO    { Select: 'ALL_ATTRIBUTES', TableName: 'CurrencyPrice' }
END RequestId: XXXX

Я ожидаю, что по крайней мере он печатает «Unable to Query» или фактические данные, которые он подключает к БД и запрашивает?

1 Ответ

0 голосов
/ 02 июня 2019

Если вы используете async/await, вы захотите вернуть обещание.

var AWS = require("aws-sdk");
AWS.config.update({ region: "ap-southeast-2" });
var ddb = new AWS.DynamoDB.DocumentClient();

exports.handler = async event => {

  console.log("i am in function");
  // Create DynamoDB service object

  var table = "CurrencyPrice";
  var params = {
    Select: "ALL_ATTRIBUTES",
    TableName: "CurrencyPrice"
  };
  console.log("querying DB" + table);

  return ddb
    .query(params)
    .promise()
    .then((err, data) => {
        console.log("i am in ddb query");
        if (err) {
            console.error("Unable to query. Error:", JSON.stringify(err, null, 2));
        } else {
            console.log(data);
        }
    });
};
...