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

时间:2015-11-24 17:43:41

标签: node.js function arguments

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

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

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');  
});

您可能已经注意到,为了注册管理员,我通过了“管理员”#39;作为第三个参数,我应该将其保存为用户角色。如果没有参数,则应将其保存为“学生”

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
}

几乎所有东西。

BUT

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

注册普通用户工作正常。 注册管理员插入'学生'作为数据库中的角色,console.log说:

validate called
role: undefined

任何想法? 这应该工作,还是我失明?

1 个答案:

答案 0 :(得分:0)

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