Как использовать модуль request-promise npm со службой REST для вызова другой службы REST, которая используется в качестве микросервиса?

#javascript #html #mysql #node.js #express

#javascript #HTML #mysql #node.js #выразить

Вопрос:

Я новичок в node.js и когда я использую модуль npm request -promises в своем проекте, у меня возникает следующая проблема, я использовал node: версии 10.19.0, express: версии 4.17.1 и request-promise: версии 4.2.6.

 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...  

Это index.js файл в моем коде.Здесь я использовал request-promise в методе Get моих операций CRUD.

 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))

});  

Могу ли я узнать, что не так с моим кодом?