#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))
});
Могу ли я узнать, что не так с моим кодом?