【发布时间】:2020-02-28 14:39:08
【问题描述】:
我刚开始使用带有 react 前端的 nodejs。但是我在验证用户时遇到了一些问题。我正在尝试获取具有特定电子邮件和密码的用户。我的api如下: 我为任何 api 请求创建了三个文件控制器、服务和路由器文件。
//userServices.js
const db = require('./../../db-connection/connection')
userAuth: (params, callback) => {
db.query(`SELECT * FROM Users WHERE email = ?`,[params.email],
(error, result, fields) => {
if(!error) {
console.log('result = ' + result[0]);
return callback(error, result[0])
}
else
return callback(error)
});
}
这是我的 userController js 文件。
//userController.js
const {create, userindex, userAuth} = require('./UserServices');
const {genSaltSync, hashSync, compareSync} = require('bcrypt');
const {sign} = require('jsonwebtoken');
userLoginAuth: (req, res) => {
const body = req.body;
userAuth(body, (error, results) => {
if (error)
console.log(error);
if (!results) {
return res.json({
success: 0,
data: 'Invalid email or password'
})
}
const result = compareSync(body.password, results.password);
if(!result) {
results.password = undefined;
const jsontoken = sign({result: results}, 'choegyel123', {
expiresIn: '1h'
});
return res.json({
success: 1,
message: 'Login successful',
token: jsontoken
})
} else
console.log('password' + result.password)
return res.json({
success: 0,
error: 'Invalid email or password'
});
});
}
但问题出在 userServices.js 文件中。我的 sql 查询已正确执行,但在“结果”的回调中,我得到了奇怪的对象。我想我应该从数据库表中获取一些相应的数据数组,并且在我的控制台日志中我得到 [object object]。我不确定这实际上是什么意思,我也很确定这是一个阻止程序,因为我无法在我的 userController 中使用这个对象检索密码。任何帮助将不胜感激。谢谢!
【问题讨论】:
-
不要连接日志消息,而是给出单独的对象。 “console.log('password', result.password)”。逗号而不是加号。这并不能解决您的主要问题,但会告诉您 result.password 实际上是什么
-
当您执行
console.log(JSON.stringify(result[0]));时会得到什么? -
@c_froehlich:上面写着“密码”未定义
-
然后查看结果:console.log(result)
标签: javascript mysql node.js reactjs express