JS函数参数未定义,即使它是

JS function argument undefined, even though it is

我的注册功能出现了一个非常奇怪的错误。

我希望用户能够正常注册。 然后我想要一个“注册管理员”页面,它只用于在数据库中注册一个管理员。

router.get('/register', function(req, res) {
   res.render('register', {title: "Register"});
});
router.post('/register', function registerUser(req, res) {
    validate.validateRegistration(req.body, res);
});

router.get('/registeradmin', function (req, res) {                                                          
    res.render('register', {title: "Register ADMIN"});                                                        
});         
router.post('/registeradmin', function(req, res) {   
    validate.validateRegistration(req.body, res, 'admin');  
});

您可能已经注意到,为了注册管理员,我将 'admin' 作为第三个参数传递,我应该将其保存为用户角色。如果没有参数,则应保存为 'student'

module.exports.validateRegistration = function(data, res, usrRole) {

console.log("validating");

console.log('role: ' + usrRole);

var username = data.username;
var password = data.password;
var email = data.email;
var firstname = data.firstname;
var lastname = data.lastname;
var role = usrRole || 'student';

// validation stuff here
}

差不多就是这些了。

但是

usrRole 未定义 我不知道为什么。 这几乎是我遇到过的最微不足道的错误,我觉得问这个问题很愚蠢,但我不知道为什么会这样。

注册普通用户没问题。 注册管理员在数据库中插入 'student' 作为角色,console.log 表示:

validate called
role: undefined

有什么想法吗? 这应该有用,还是我瞎了?

调试您的代码并确保您正在调用 registeradmin 路由。您可以将 console.log("bla bla"); 添加到您的 registeradmin 路由中,以确保您正在调用此路由。