Express不会返回布尔参数。这有什么不对?

时间:2015-05-04 10:13:59

标签: javascript mongodb variables express

我是软件开发人员的学徒,因此我对MongoDB和ExpressJS没有多少经验。

我的任务是将新用户插入数据库(MongoDB)。在此之前我想保证,该名称在数据库中不存在。如果数据库中不存在用户名,那么我想继续插入新用户的任务。

以下代码适用于ExpressJS(但MongoDB的Model'用户'可以使用!):

router.post('/signUp', function(req, res, next) {
    var contents = req.body;
    var pass;

    var search = user.findOne({username: contents.username});
    search.exec(function (error, user) {
        if (error) {
            res.status(500).json({failure: "An error has occured:\t" + error});
            pass = false;
        }
        if (user) {
            res.status(500).json({failure: "Username is already forgiven!\nPlease choose another username."});
            pass = false;
        } else pass = true;
    });

    console.log("Shall I insert the new user? " + pass);

    if (pass) res.status(200).json({success: "You were signed up!"});
    else res.status(500).json({failure: "You cannot sign up, because there's an internal error!"});
 });

一件事是,无论数据是否存在,传递都将始终未定义。

这对我来说很奇怪,但是在函数'search.exec()'之前声明了全局变量'pass'。

我的代码出了什么问题?
非常感谢您的帮助。

最好的问候 t.koelpin

EDITED 04.05.2015 - 13:15 h

我用以下代码解决了这个问题:

var search = user.findOne({username: contents.username});
search.exec(function (error, user) {
    if (error) res.status(500).json({failure: "An error has occured:\t" + error});
    if (user) res.status(500).json({failure: "Username is already forgiven!\nPlease choose another username."});
    else {
        // Code for the insertions to MongoDB
        res.status(200).json({success: "You were signed up!"});
    }
});

0 个答案:

没有答案