【问题标题】:Node.js - return value from MySQL queryNode.js - MySQL 查询的返回值
【发布时间】:2014-09-27 14:38:08
【问题描述】:

我想在 Node.js 中返回 MySQL 查询,但我遇到了一些问题。

问题 1。 'var userInfo' 无法从函数 'Authenticate()' 中获取值

问题 2。抛出将被 'dbclient.query' 捕获,而不是你可以看到的我的代码。

希望大家能帮帮我。


app.post('/create_member_check', function(req, res) {
    var Authenticate = function () {
        SearchUser(req.body.email, function (isExist) { 
            if (isExist === true)
                throw 101;
            else if (req.body.email === undefined || req.body.email == "")
                throw 102;
            else if (req.body.password === undefined || req.body.password == "")
                throw 103;
            else if (isExist === undefined)
                throw 104;

            var user = {
                "email": req.body.email,
                "password": req.body.password
            };
            AddUser(user);
            // This line cannot return the 'user' for 'Authenticate()' caller.
            return user;
        });
    }

    try {
        var userInfo = Authenticate();
    }
    catch (err) {
        var userInfo;
        if (err == 101)
            userInfo = "[Error] This account already exists.";
        else if (err == 102)
            userInfo = "[Error] Please key in 'email'.";
        else if (err == 103)
            userInfo = "[Error] Please key in 'password'.";
        else if (err == 104)
            userInfo = "[Fatal Error] SearchUser return 'undefined'.";
    }

    res.render("login_system/create_member_check", {
        layout: false,
        pagename: "create",
        authenticate: userInfo
    });
});

SearchUser = function (email, callback) {
    dbclient.query("SELECT * FROM user WHERE email = \"" + email + "\"", function (err, results) {
        if (err || results.length <= 0)
            callback(false);
        else
            callback(true);
    });
}

【问题讨论】:

    标签: javascript mysql node.js


    【解决方案1】:

    身份验证方法不能同步。您应该制作异步方法。试试这个。

    app.post('/create_member_check', function(req, res) {
        var Authenticate = function (req, callback) {
            SearchUser(req.body.email, function (isExist) { 
                if (isExist === true)
                    return callback(101);
                else if (req.body.email === undefined || req.body.email == "")
                    return callback(102);
                else if (req.body.password === undefined || req.body.password == "")
                    return callback(103);
                else if (isExist === undefined)
                    return callback(104);
    
                var user = {
                    "email": req.body.email,
                    "password": req.body.password
                };
                AddUser(user); //this is maybe asynchronous, again
                callback(null, user);
            });
        }
    
        Authenticate(req, function(err, user){
            var userInfo;
            if (err == 101)
                userInfo = "[Error] This account already exists.";
            else if (err == 102)
                userInfo = "[Error] Please key in 'email'.";
            else if (err == 103)
                userInfo = "[Error] Please key in 'password'.";
            else if (err == 104)
                userInfo = "[Fatal Error] SearchUser return 'undefined'.";
    
            res.render("login_system/create_member_check", {
                layout: false,
                pagename: "create",
                authenticate: userInfo
            });
        });
    });
    

    并阅读此article ;)

    【讨论】:

    • 谢谢!!太棒了:)
    猜你喜欢
    • 2013-08-24
    • 2018-04-06
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多