Узел JS серверная лямбда-функция API отдыха, которая сначала выполняет запрос GET, а затем POST, если условие выполнено - PullRequest
0 голосов
/ 22 февраля 2019

Я новичок в NodeJS и должен написать бессерверный API отдыха для интернет-магазина (школьный проект).Команда, в которой я работаю, отвечает за размещение заказов клиентов.Чтобы разместить заказ, в запасе должно быть достаточное количество (другой API), поэтому мы должны проверить количество в запасе с помощью GET, прежде чем сохранить заказ в базе данных с помощью POST.Как мы должны идти об этом?Это то, что я пробовал, но в итоге получаю тайм-аут.Код ниже основан на этом примере: aws-node-rest-api-with-dynamodb для меня, чтобы освоить NodeJS и без сервера.

.yml file

functions:
  create:
    handler: todos/test.f
    events:
      - http:
          path: todos
          method: post
          cors: true

test.js

    const create = require("./create.js");
    exports.f = function() {



const https = require('https'); 

https.get('url goes here', (resp) => { 
  let data = ''; 

  // A chunk of data has been recieved. 
  resp.on('data', (chunk) => { 
    data += chunk; 
  }); 

  // The whole response has been received. Print out the result. 
  resp.on('end', () => { 
    console.log(data); 
    var str = String(data);
    console.log("Check: " + (str.trim() == "OK"))
    create.c(); //also tried create.create();

  }); 

}).on("error", (err) => { 
  console.log("Error: " + err.message); 
}); 

      }

create.js

'use strict';


const uuid = require('uuid');
const dynamodb = require('./dynamodb');

exports.c = function (){
  console.log("Fire!");

}
module.exports.create = (event, context, callback) => {
  const timestamp = new Date().getTime();
  const data = JSON.parse(event.body);
  if (typeof data.text !== 'string') {
    console.error('Validation Failed');
    callback(null, {
      statusCode: 400,
      headers: { 'Content-Type': 'text/plain' },
      body: 'Couldn\'t create the todo item.',
    });
    return;
  }

  const params = {
    TableName: 'todos',
    Item: {
      id: uuid.v1(),
      text: data.text,
      checked: false,
      createdAt: timestamp,
      updatedAt: timestamp,
    },
  };

  // write the todo to the database
  dynamodb.put(params, (error) => {
    // handle potential errors
    if (error) {
      console.error(error);
      callback(null, {
        statusCode: error.statusCode || 501,
        headers: { 'Content-Type': 'text/plain' },
        body: 'Couldn\'t create the todo item.',
      });
      return;
    }

    // create a response
    const response = {
      statusCode: 200,
      body: JSON.stringify(params.Item),
    };
    callback(null, response);
  });
};

Любые мысли о том, как получить эторабота

...