Лямбда-функция Nodejs При вызове API возвращается false - PullRequest
0 голосов
/ 01 ноября 2019

На моей консоли AWS lamda работает следующий код. Код заканчивается нормально, но не вызывает API. Знаете ли вы, что не так в этом коде или как можно отслеживать журналы?

   var http = require('https');

   exports.handler = function (event, context) {

   const _requestData = JSON.stringify('{"Name":"AWS Lambda"}');

   console.log(event +' ____event ' +_requestData + ' ______requestData');

   const _options = {
             host: "login.salesforce.com",
             path: "/services/data/v20.0/sobjects/Case/",
              method: 'POST',
              port: 80,
              headers: {
                'grant_type' : 'authorization_code', 
                'client_id':'xxxxxx',
                'client_secret':'xxxxxxx',
                'Content-Type': 'application/json',
                'Content-Length': Buffer.byteLength(JSON.stringify(_requestData))
              }

  };

  var post_req = http.request(_options, function(res) {
      res.setEncoding('utf8');
      res.on('data', function (chunk) {
          console.log('Response Chunk: ' + chunk);
      });
   });
   console.log('post_req' + JSON.stringify(post_req));
   var post_response = post_req.write(_requestData);
   console.log('post_response '+post_response);
   post_req.end();
   context.succeed("done");

}

1 Ответ

0 голосов
/ 01 ноября 2019

Кажется, вы новичок в Node, Nevermind, вы сделали несколько ошибок. Эта строка var post_response = post_req.write(_requestData) не даст вам конечного результата, она возвращает true, если запись прошла успешно. Вы можете изменить функцию следующим образом:

var http = require('https');
exports.handler = function(event, context) {

    const _requestData = JSON.stringify('{"Name":"AWS Lambda"}');

    console.log(event + ' ____event ' + _requestData + ' ______requestData');

    const _options = {
        host: "login.salesforce.com",
        path: "/services/data/v20.0/sobjects/Case/",
        method: 'POST',
        port: 80,
        headers: {
            'grant_type': 'authorization_code',
            'client_id': 'xxxxxx',
            'client_secret': 'xxxxxxx',
            'Content-Type': 'application/json',
            'Content-Length': Buffer.byteLength(JSON.stringify(_requestData))
        }

    };

    var post_req = http.request(_options, function(res) {
        let post_response;
        let chunks = []
        res.setEncoding('utf8');
        res.on('data', function(chunk) {
            console.log('Response Chunk: ' + chunk);
            chunks.push(chunk)
        });
        res.on('end', function() {
            post_response = JSON.parse(Buffer.concate(chunks).toString())
            // once request done send lambda response
            context.succeed("done");
        })
    });
    post_req.end();
    pos_req.on('error', function(err) {
        context.succeed("failed");
    })

}

Если вы новичок в Node, я бы порекомендовализучение асинхронного программирования, потоковой передачи, обратных вызовов, обещаний и, конечно, асинхронного ожидания.

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