Я новичок в узле, создаю простую страницу входа.Вызов функции с обратным вызовом запроса, и я объявил функцию с асинхронным, все еще получая ниже ошибку.
Ошибка
{}
POST /login 500 14.005 ms - 878
Promise { <pending> }
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 ServerResponse.header (F:\eMpulse\node_modules\express\lib\response.js:767:10)
at ServerResponse.send (F:\eMpulse\node_modules\express\lib\response.js:170:12)
at done (F:\eMpulse\node_modules\express\lib\response.js:1004:10)
at tryHandleCache (F:\eMpulse\node_modules\ejs\lib\ejs.js:257:5)
at View.exports.renderFile [as engine] (F:\eMpulse\node_modules\ejs\lib\ejs.js:482:10)
at View.render (F:\eMpulse\node_modules\express\lib\view.js:135:8)
at tryRender (F:\eMpulse\node_modules\express\lib\application.js:640:10)
at Function.render (F:\eMpulse\node_modules\express\lib\application.js:592:3)
Это код моего контроллера.
router.post('/',function(req,res,next){
console.log('post');
loginModel.login(req.body,function(result){
console.log(result);
res.render('login',{result:result});
});
})
Этомоя модель.
var config = require('../config/db');
var sql = require('mssql/msnodesqlv8');
var login = {
login : async function(input,callback){
var data = {};
await sql.connect(config,function(err){
if(err) throw err;
var query = "select fld_userid from users where fld_userid='"+input.username+"'";
new sql.Request()
.query(query,function(err,result){
if(err){
data['db_error'] = result.originalError;
}else{
if(result.recordset.length>0){
data = login.checkPassord(input);
return callback(data);
}else{
data['error']="You are not registered!";
}
}
})
})
return callback(data);
},
checkPassord:function(input){
return new Promise(function(resolve,reject){
var data = {};
var query = "select fld_userid from users where fld_userid='"+input.username+"' and fld_password='"+input.password+"'";
new sql.Request().query(query,function(err,result){
if(err) throw err;
// data['db_error'] = err.originalError;
if(result.recordset.length>0){
data['res'] = result.recordset;
}else{
data['error'] = "You have entered wrong password!";
}
sql.close();
resolve(data);
})
})
}
}
module.exports = login;
когда я использую await в этой строке
data = await login.checkPassord(input);
получаю ошибку ниже
F:\eMpulse\models\login.js:15
data = await login.checkPassord(input);
^^^^^
SyntaxError: await is only valid in async function
Пожалуйста, помогите решить проблему.Я погуглил, но не получил никаких решений.