我有一個從MySQL數據庫中選擇用戶名的函數,並返回結果POST請求如下:令牌不創建的NodeJS
function userAuthentication(user){
var deferred = Q.defer();
pool.getConnection(function(err, connection) {
if (err) {
var dbError = new Error('No db connection');
console.log(dbError);
}
else {
var selectUserName = 'SELECT * FROM User WHERE username= '+connection.escape(user)+' ';
connection.query(selectUserName, function(error, rows){
if(error){
console.log(error);
deferred.reject(error);
}
else if(rows.length === 0){
var countError = new Error('No User Found');
console.log ("Database.js -> "+ countError);
deferred.reject(countError);
}else{
deferred.resolve(rows);
}
});
}
connection.release();
});
return deferred.promise;
}
功能userAuthentication
從rout.post叫要求
router.post('/checkAuthentication', function(request, response) {
database.userAuthentication(request.body.username).then(function(data) {
if(data[0].RowDataPacket!=0){
if(bcrypt.compareSync(request.body.password,data[0].password)){
var token = jwt.sign({
username: data[0].username,
}, superSecret,{
expiresInMinutes: 1440
});
console.log(token);
// return the information including token as JSON
response.json({
success: true,
message: 'Token Created',
token: token
});
}
else{
response.json({ success: false, message: 'Authentication failed. Wrong Password.' });
}
}else{
response.json({ success: false, message: 'Authentication failed. User not found.' });
}
});
});
我想創建一個令牌,當我檢查inputed用戶名和密碼MySQLdb的的那些比賽,但不幸的是令牌不創建;行console.log(token)
不會將任何結果輸出到控制檯。什麼是我失蹤的部分?我感謝你的幫助。
你說「行'console.log(令牌)'不打印任何結果到控制檯中」:究竟是什麼意思? console.log語句甚至沒有執行?如果是,它是否打印一個空字符串,null,undefined ...? – MarcoS
@MarcoSü我把var標記當作一個變量..如何在控制檯中檢查標記是否被創建?因爲即使是下一行,response.json也不會抓取? –
'console.log(token)'語句是否被執行?如果是,它究竟打印什麼? – MarcoS