How use the request-promise npm module with REST service to call another REST service which is used as a microservice?

Viewed 121

I am new to the node.js and when i use the request -promises npm module with my project i have got following issue,I have used node: v10.19.0 , express: ^4.17.1 versions and request-promise:^4.2.6 versions.

Express server is runnig at port no : 3001                                                                 
DB connection succeded.
ReferenceError: employee is not defined
    at app.get (/home/naoda/Documents/audit_test/index.js:43:16)
    at Layer.handle [as handle_request] (/home/naoda/Documents/audit_test/node_modules/express/lib/router/layer.js:95:5)
    at next (/home/naoda/Documents/audit_test/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/home/naoda/Documents/audit_test/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/home/naoda/Documents/audit_test/node_modules/express/lib/router/layer.js:95:5)
    at /home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:281:22
    at param (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:354:14)
    at param (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:365:14)
    at Function.process_params (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:410:3)
    at next (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:275:10)
    at jsonParser (/home/naoda/Documents/audit_test/node_modules/body-parser/lib/types/json.js:110:7)
    at Layer.handle [as handle_request] (/home/naoda/Documents/audit_test/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:317:13)
    at /home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:335:12)
    at next (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:275:10)
    at expressInit (/home/naoda/Documents/audit_test/node_modules/express/lib/middleware/init.js:40:5)
    at Layer.handle [as handle_request] (/home/naoda/Documents/audit_test/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:317:13)
    at /home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:335:12)
    at next (/home/naoda/Documents/audit_test/node_modules/express/lib/router/index.js:275:10)
/home/naoda/Documents/audit_test/node_modules/mysql/lib/protocol/Parser.js:437
      throw err; // Rethrow non-MySQL errors
      ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:470:11)
    at ServerResponse.header (/home/naoda/Documents/audit_test/node_modules/express/lib/response.js:771:10)
    at ServerResponse.send (/home/naoda/Documents/audit_test/node_modules/express/lib/response.js:170:12)
    at ServerResponse.json (/home/naoda/Documents/audit_test/node_modules/express/lib/response.js:267:15)
    at ServerResponse.send (/home/naoda/Documents/audit_test/node_modules/express/lib/response.js:158:21)
    at Query.mysqlConnection.query (/home/naoda/Documents/audit_test/index.js:32:24)
    at Query.<anonymous> (/home/naoda/Documents/audit_test/node_modules/mysql/lib/Connection.js:526:10)
    at Query._callback (/home/naoda/Documents/audit_test/node_modules/mysql/lib/Connection.js:488:16)
    at Query.Sequence.end (/home/naoda/Documents/audit_test/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
    at Query._handleFinalResultPacket (/home/naoda/Documents/audit_test/node_modules/mysql/lib/protocol/sequences/Query.js:149:8)
    at Query.EofPacket (/home/naoda/Documents/audit_test/node_modules/mysql/lib/protocol/sequences/Query.js:133:8)
    at Protocol._parsePacket (/home/naoda/Documents/audit_test/node_modules/mysql/lib/protocol/Protocol.js:291:23)
    at Parser._parsePacket (/home/naoda/Documents/audit_test/node_modules/mysql/lib/protocol/Parser.js:433:10)
    at Parser.write (/home/naoda/Documents/audit_test/node_modules/mysql/lib/protocol/Parser.js:43:10)
    at Protocol.write (/home/naoda/Documents/audit_test/node_modules/mysql/lib/protocol/Protocol.js:38:16)
    at Socket.<anonymous> (/home/naoda/Documents/audit_test/node_modules/mysql/lib/Connection.js:88:28)
    at Socket.<anonymous> (/home/naoda/Documents/audit_test/node_modules/mysql/lib/Connection.js:526:10)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
[nodemon] app crashed - waiting for file changes before starting...

This is the index.js file in my code.Here i used the request-promise within the Get method of my CRUD oprations .

const mysql = require('mysql');
const express = require('express');
var app = express();
const bodyparser = require('body-parser');
const rp = require("request-promise");
app.use(bodyparser.json());

var mysqlConnection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    //port:'8080',
    password: '',
    database: 'Test',
    //multipleStatements: true
});

mysqlConnection.connect((err) => {
    if (!err)
        console.log('DB connection succeded.');
    else
        console.log('DB connection failed \n Error : ' + JSON.stringify(err, undefined, 2));
});


app.listen(3001, () => console.log('Express server is runnig at port no : 3001                                                                 '));


//Get all employees
app.get('/employees/:id', (req, res) => {
    mysqlConnection.query('SELECT * FROM Employee WHERE Id = ?', [req.params.Id], (err, rows, fields) => {
               if (!err)
                   res.send(fields);
               else
                   console.log(err);
            }) 
        
    

    const options = {
        url: "https://localhost:3000/audit/checkAuditStatus",
        method: "GET",
        qs: {
          name:employee,
          type:select
        },
        
        json: true
      };

      rp(options)
      .then(function(response)
      {
if(response===true)
{

    const options = {
        url: "https://localhost:3000/audit/createAuditRecord",
        method: "POST",
        body: {
            name:employee,
            type: select,
            user_id: null,
            exec_date: function(){
                var today = new Date();
                var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
                 return date;
            },
            exec_time: function (){

                var today = new Date();
                var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
                return time;
            },
            exec_data:{
                
                    "employee":{ "name":"John", "age":30, "city":"New York" }
                    
            }
        },
        // headers: {
        //   "User-Agent": "request"
        // },
        json: true
      };

 rp(options)
 .then (function(response){
 if(response===true)
 console.log(" TAsk has been completed!")

})
. catch(err => console.error(err))

}
})
      .catch(err => console.error(err))

});

May i know what is the wrong with my code?

0 Answers
Related