用户在数据库中创建,多次检查代码,没有语法错误,只返回undefined,甚至创建用户。使用名称和密码发出请求时,也可以正确输入凭据。代码:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var User = new Schema({
name: String,
password: String,
admin: Boolean
});
var Usermodel = mongoose.model("user", User);
module.exports = Usermodel;
router.post('/authenticate', function(req, res) {
// find the user
user.findOne({
name: req.body.name
}).then(function(err, user) {
console.log(user);
if (err) throw err;
if (!user) {
res.json({ success: false, message: 'Authentication failed. User not found.' });
} else if (user) {
// check if password matches
if (user.password != req.body.password) {
res.json({ success: false, message: 'Authentication failed. Wrong password.' });
} else {
// if user is found and password is right
// create a token with only our given payload
// we don't want to pass in the entire user since that has the password
const payload = {
admin: user.admin
};
var token = jwt.sign(payload, 'superSecret', {
expiresIn: 60*60*24 // expires in 24 hours
});
// return the information including token as JSON
res.json({
success: true,
message: 'Enjoy your token!',
token: token
});
}
}
});
});
所有必需的依赖项,我没有得到任何错误的控制台,只是if语句找不到我创建的用户,console.log返回undefined。我在这里错过了什么吗?这没有任何意义。我将回调改为承诺,但仍然如此。在DB中查找用户时,我觉得我做错了什么。我试过找({})但没有运气。
答案 0 :(得分:0)
由于你使用的是user.find,你的用户变量是什么,你在哪里声明了这个?
您正在将用户架构模型分配给 Usermodel
您的查询应为Usermodel.findOne({name:req.body.name})