запуск машинописного текста перед ожиданием ответа - PullRequest
0 голосов
/ 17 марта 2019

Я работаю с Serverless для создания конечной точки получения REST. Намерение состоит в том, чтобы вызвать эту конечную точку и вернуть значение из запроса DynamoDB (конкретный тег body). У меня проблема в том, что ответ от этой конечной точки {} при ее вызове. Я полагаю, что это потому, что return вызывается до того, как станут доступны данные запроса.

Однако при выполнении запроса я использую ключевое слово await, поэтому я предполагаю, что получу реальные данные, а не обещание.

Вот мой код:

import { APIGatewayProxyHandler } from 'aws-lambda';
const AWS = require('aws-sdk');
var dynamoDB = new AWS.DynamoDB.DocumentClient();

export const getorder: APIGatewayProxyHandler = async (event, _context) => {
  var orderRefId = +event.queryStringParameters.orderRefId;

  var params = {
    TableName: 'MYTABLENAME',
    KeyConditionExpression: 'orderRefId = :orderRefId',
    ExpressionAttributeValues:{
      ':orderRefId': orderRefId
    }
  }

  let result = await dynamoDB.query(params).promise();

  return {
    statusCode: 200,
    body: JSON.stringify({
      order: result.Items[0].body
    })
  };
}

Есть мысли о том, почему return стреляет до того, как у result есть данные?

1 Ответ

0 голосов
/ 17 марта 2019

Проблема, с которой я столкнулся, заключается в том, что ответ от этой конечной точки равен {}, когда она вызывается.

Это никогда не может быть {}.Скорее всего, это Promise, и вам нужно обслужить это.

Примечание

async функции всегда возвращать обещание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...