【问题标题】:module.exports return undefined when called from router从路由器调用时,module.exports 返回 undefined
【发布时间】:2019-12-08 04:53:52
【问题描述】:

我正在构建一个用户注册和 crud 应用程序。我有一个数据库模型。

var valid;
module.exports = {
    connectDB: function(){
    }
    ,
    findUser: function(req,res) {
    }
    ,
    createUser: function(email,name,password){
        var role = 'view';
        var sql = "INSERT INTO `users`(email, name, password, role) VALUES (" +  "'"+email+"'"+","+"'"+name+"'"+","+"'"+password+"'"+","+"'"+role+"'"+")";
        db.query(sql, function(err, result){
            if(err){
                console.log(`FAILED: ${err}`)
                return false; // tried setting valid to false
            }
            else
            {
                console.log(`User Created`);
                valid = true;

            }
        });
       return valid; // this also returns undefined 
    }
}

我希望能够根据查询的连续性返回一个布尔值。我尝试返回真/假。我做了一些搜索为什么会发生这种情况。首先有一个关于 js 是异步的解释。 我的问题是导出时在函数中返回值以便我可以使用它的正确方法是什么?

【问题讨论】:

  • 是的,谢谢。在让它返回一个新的承诺并在它完成时解决它,而在它失败时拒绝它后,我能够修复它。哇。
  • 暂且不提准备好的查询
  • 原谅?我不明白。我应该使用反引号而不是 " 吗?

标签: javascript node.js undefined return-type module.exports


【解决方案1】:

通过使用承诺

    createUser: function(email,name,password){
        return new Promise(function(resolve,reject){
            var role = 'view';
            var sql = "INSERT INTO `users`(name, password, role) VALUES (" +  "'"+email+"'"+","+"'"+name+"'"+","+"'"+password+"'"+","+"'"+role+"'"+")";
            db.query(sql, function(err, result){
                if(err){
                    console.log(`FAILED: ${err}`)
                    reject(err);
                }
                else
                {
                    console.log(`User Created`);
                    resolve();
                }
            });
        })
    }

我们现在可以像这样使用 createUser 了;

 db.createUser(email,name,password).then(function(){
    console.log('redirect');
    res.redirect('/');
  }).catch(function(){
    console.log('something went wrong');
    res.render('signup', { message: 'something went wrong' })
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 2022-12-22
    • 2023-04-07
    • 2016-12-10
    • 2018-07-29
    相关资源
    最近更新 更多