【发布时间】:2020-09-17 23:42:13
【问题描述】:
我正在使用 node.js/express/sequelize 登录用户。我正在测试在邮递员中发出请求,看看它是否得到任何东西。我正在测试一个我知道在数据库中的用户和密码,但是即使测试的名称在数据库中,我在 sequelize 中的 findOne 查询也会返回 null。这是有问题的查询:
let { userId, pw } = req.body
try{
const foundUser = await User.findOne({ where: { userId: userId } });
if (foundUser === null) {
return res.status(401).send({ auth: false, token: null,error: 'name not found' });
} else {
const passwordIsValid = bcrypt.compareSync(pw, foundUser.pw);
if (!passwordIsValid) return res.status(401).send({ auth: false, token: null,error: 'name not found' });
const token = jwt.sign({ id: foundUser.id}, config.secret, {
expiresIn: 86400 // expires in 24 hours
});
res.status(200).json({auth:true,token:token});
}
} catch (err) {
res.status(500).json(err);
}
}
我在索引 js 上为 jsonenter 图像描述实现了 body-parser,并且路由工作作为 userId 和 pwd 值使其进入 findOne 查询。但是它仍然说查询后没有结果。终端运行以下内容(userId 为 'slim')
执行(默认):SELECT id, username, userId, pw, createdAt, updatedAt FROM users AS users WHERE userId =.'@986苗条的';
'slim' 位于 Json 和 db 的 'userId' 部分中
【问题讨论】:
-
首先使用 findAll,它返回数组
-
如果不是问题,只需检查 req.body 是否返回正确的值
-
我不好,我使用的是 findOne,但在发布此问题之前尝试将其更改为 findall。 FindAll 返回 500 错误。我会相应地编辑
标签: mysql node.js express sequelize.js postman