Я создаю сайт. Мой код клиента находится в EJS, а код моего сервера - в Node.js. Я успешно отправил переменную результатов db.query через res.send () ;. Но теперь я хочу использовать два запроса, получать и отправлять значения этих запросов клиенту. Но если я использую только одну переменную, это нормально, но когда я использую обе переменные из 2 запросов в клиенте, это выдает мне ошибку: Ошибка: Невозможно установить заголовки после их отправки.
Вот мой файл login.js:
var username;
var password;
var result;
module.exports = {
inserttest : (req,res) => {
// let query = "SELECT * FROM `login` where username"; // query database to get all the players
db.query('SELECT * FROM login WHERE username = ? AND password = ?', [username, password], function(error, result, fields) {
if (error) {
res.redirect('/login');
}
var moisture = 11232;
var ph = 1121;
var ec = 543;
var date1=new Date();
const sqlq='insert into usertest values ?';
var values = [
[result[0].kitno,moisture,ph,ec,date1]
];
db.query(sqlq, [values], function(error, results, fields) {
if(error)
{
console.log("error");
//var a
//res.send(500,'showAlert')
}
else{
console.log("1 row inserted successfully");
}
var result2= doQuery1();
res.render('mytest',
{
url:"/mytest",
title:"WELCOME2",
results1:result,
results2:result2
});
});
});
function doQuery1(){
let query = "SELECT * FROM usertest WHERE kitno IN(select kitno from login where username = ? AND password = ?)";
var resource;
db.query(query, [username, password], function(error, result4, fields){
resource=result4;
});
return resource;
};
},
Вот мой EJS, т.е. код файла login.ejs:
Здесь я использую result1 [0] .name в качестве заголовка. и result2 [i] .ph in for loop.
<main class="page-content">
<div class="container-fluid">
<h2>My Tests</h2>
<hr>
<div id="main">
<div id="left" class="container">
<br>
<form method="get" action="/insertvalues">
<input type="submit" value="Start Test" />
</form>
<% for (var i = 0; i < results2.length; i++) { %>
<%=results2[i].ph%>
<%}%>
<br>
Я пробовал несколько способов отправить эту переменную results1 и result2 через res.render (), но он запускается только при удалении кодов result2 из клиента.
Ошибка, которую я получаю:
_http_outgoing.js:491
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:491:11)
at ServerResponse.setHeader (_http_outgoing.js:498:3)
at Array.write (C:\Users\Rohit\Desktop\Project_me\soil2\node_modules\finalhandler\index.js:285:9)
at listener (C:\Users\Rohit\Desktop\Project_me\soil2\node_modules\on-finished\index.js:169:15)
at onFinish (C:\Users\Rohit\Desktop\Project_me\soil2\node_modules\on-finished\index.js:100:5)
at callback (C:\Users\Rohit\Desktop\Project_me\soil2\node_modules\ee-first\index.js:55:10)
at IncomingMessage.onevent (C:\Users\Rohit\Desktop\Project_me\soil2\node_modules\ee-first\index.js:93:5)
at emitNone (events.js:106:13)
at IncomingMessage.emit (events.js:208:7)
at endReadableNT (_stream_readable.js:1064:12)
Помощь приветствуется. Дайте мне знать, если что-нибудь еще понадобится.