generateJWT 不是函数
generateJWT is not a function
我正在尝试使 facebook 登录成为可能:
这是我的 API 路线:
router.post('/registerFb', function(req, res, next){
User.find({ 'username': req.body.username}, function(err, foundUser){
if(err)
return next(err);
var co = Object.keys(foundUser).length;
if (co === 0)
{
var user = new User();
user.username = req.body.username;
user.firstname = "firstname";
user.lastname = "lastname";
user.difficulty = "easy";
user.isstudent = false;
user.haschildren = false;
user.gender = "male";
user.isdoingchallenges = false;
user.facebookid = req.body.facebookid;
user.save(function (err){
if(err){ return next(err); }
return res.json({token: user.generateJWT()});
});
}else{
return res.json({token: foundUser.generateJWT()});
}
});
});
当用户第一次使用 facebook 登录时,将存储用户并使用 jsonwebtoken 生成令牌。
然而,当已经有来自该 fb 帐户的用户时,它给我错误:
TypeError: foundUser.generateJWT is not a function
为什么会这样? generateJWT 对新用户有效但对找到的用户无效?
我将 API 路线编辑为:
if (co === 0)
{
var user = new User();
user.username = req.body.username;
user.firstname = "firstname";
user.lastname = "lastname";
user.difficulty = "easy";
user.isstudent = false;
user.haschildren = false;
user.gender = "male";
user.isdoingchallenges = false;
user.facebookid = req.body.facebookid;
user.save(function (err){
if(err){ return next(err); }
return res.json({token: user.generateJWT()});
});
}else{
var user = new User();
user._id = foundUser._id;
user.username = foundUser.username;
return res.json({token: user.generateJWT()});
}
在 postman 中使用时,它 returns 像预期的标记。
但是当我在生产模式下使用它时,出现 500 内部服务器错误。
user
是 User
的一个实例,而 foundUser
是一个对象 return 通过 User.find
方法编辑。
您可能需要将 find
方法修改为 User
的 return 实例,或者如果它是数据库 (mongo?) 处理程序,则创建 User
在调用 generateJWT
方法之前的回调中。
我正在尝试使 facebook 登录成为可能:
这是我的 API 路线:
router.post('/registerFb', function(req, res, next){
User.find({ 'username': req.body.username}, function(err, foundUser){
if(err)
return next(err);
var co = Object.keys(foundUser).length;
if (co === 0)
{
var user = new User();
user.username = req.body.username;
user.firstname = "firstname";
user.lastname = "lastname";
user.difficulty = "easy";
user.isstudent = false;
user.haschildren = false;
user.gender = "male";
user.isdoingchallenges = false;
user.facebookid = req.body.facebookid;
user.save(function (err){
if(err){ return next(err); }
return res.json({token: user.generateJWT()});
});
}else{
return res.json({token: foundUser.generateJWT()});
}
});
});
当用户第一次使用 facebook 登录时,将存储用户并使用 jsonwebtoken 生成令牌。
然而,当已经有来自该 fb 帐户的用户时,它给我错误:
TypeError: foundUser.generateJWT is not a function
为什么会这样? generateJWT 对新用户有效但对找到的用户无效?
我将 API 路线编辑为:
if (co === 0)
{
var user = new User();
user.username = req.body.username;
user.firstname = "firstname";
user.lastname = "lastname";
user.difficulty = "easy";
user.isstudent = false;
user.haschildren = false;
user.gender = "male";
user.isdoingchallenges = false;
user.facebookid = req.body.facebookid;
user.save(function (err){
if(err){ return next(err); }
return res.json({token: user.generateJWT()});
});
}else{
var user = new User();
user._id = foundUser._id;
user.username = foundUser.username;
return res.json({token: user.generateJWT()});
}
在 postman 中使用时,它 returns 像预期的标记。
但是当我在生产模式下使用它时,出现 500 内部服务器错误。
user
是 User
的一个实例,而 foundUser
是一个对象 return 通过 User.find
方法编辑。
您可能需要将 find
方法修改为 User
的 return 实例,或者如果它是数据库 (mongo?) 处理程序,则创建 User
在调用 generateJWT
方法之前的回调中。