使用Express和Mongoose,我有下面的代码来查找用户,检查用户名,然后匹配密码。
BroadcastReceiver
在JWT令牌签名后,我想将/* POST signin with user credentials. */
router.post('/signin', async (req, res, next) => {
let result = await User.find({
email: req.body.email
});
let user = result[0];
bcrypt.compare(req.body.password, result[0].password, (err, result) => {
if (result) {
user._doc.token = jwt.sign({
email: req.body.email
}, config.secret, {
expiresIn: 86400,
});
res.send(user);
} else {
res.status(401).send({
message: 'Password does not match.'
});
}
});
});
密钥val添加到用户对象并返回它。
但是经过反复试验,我无法做token
,而我不得不做user.token =jwt.sign
。
这是Mongoose和MongoDB的新手,这是我可以添加到要分配给变量并使其可变的返回文档中的唯一方法吗?
答案 0 :(得分:1)
尝试在用户文档上使用.toObject()以获得纯JavaScript对象,您可以在其中随意操作。
代码
let user = result[0].toObject();
应该返回普通用户对象,然后您可以创建user.token = jwt.sign
。
有关参考,请参见http://mongoosejs.com/docs/api.html#document_Document-toObject