Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
节点MySQL插入,使用回调在多个表上检索,通过填充3个表完成注册流_Mysql_Node.js_Callback - Fatal编程技术网

节点MySQL插入,使用回调在多个表上检索,通过填充3个表完成注册流

节点MySQL插入,使用回调在多个表上检索,通过填充3个表完成注册流,mysql,node.js,callback,Mysql,Node.js,Callback,我知道这个问题很重要。但是下面的代码通过更新3表成功地工作了。但是我在处理多个回调时被打动了。还需要帮助,以获得在这种情况下处理回调的最佳实践方法 工作目标:需要维护注册表、登录表、用户信息表(具有通用用户名、电子邮件信息) 成功注册后,从客户端向Req提交表单到节点JS 第一个条件名称不应已存在于-->签入代码中 第二个条件电子邮件不应已存在-->签入代码 注册表,登录表,用户信息表必须填写。-->工作 但最重要的一点是需要更新并同时检查mysql | |插入操作中的任何错误 这是启动进程

我知道这个问题很重要。但是下面的代码通过更新3表成功地工作了。但是我在处理多个回调时被打动了。还需要帮助,以获得在这种情况下处理回调的最佳实践方法

工作目标:需要维护注册表、登录表、用户信息表(具有通用用户名、电子邮件信息)

  • 成功注册后,从客户端向Req提交表单到节点JS
  • 第一个条件名称不应已存在于-->签入代码中
  • 第二个条件电子邮件不应已存在-->签入代码
  • 注册表登录表用户信息表必须填写。-->工作
但最重要的一点是需要更新并同时检查mysql | |插入操作中的任何错误

这是启动进程的途径//代码中没有语法错误-需要功能点和逻辑点的帮助

    router.post('/api/register', function(req, res, next) {
    console.log(req);
    let registerData = req.body;
    let gotCallBack = false;
    dbConnection(function(err, connection) {
        if(err) {
          console.log(err);
          res.send({'error': 'Something went wrong with Connection'})
        }
        else {
          registerSave(registerData, connection, function(error, response) {
            if(!error && response == 'success') {
              res.send({'success': registerData.username});
            }
            else if(!error && (response == registerData.username || response == registerData.email)) {
              res.send({'exists': response});
            }
            else {
              if(gotCallBack) {
                return ;
              }
              else {
                gotCallBack = true;
                res.send({'error':'Something went wrong'});
              }
            }
          });
        }
    });
  });
下面是所有3个带有回调代码的表插入操作

let checkDBData = require('./check_data');
let checkUserInfoData = {};
let processError = false;

function registrationSave(regData, connection, callback) {
    checkUserInfoData.colName = 'username';
    checkUserInfoData.colValue = regData.username;
    checkDBData.checkUserInfoFieldsExists(checkUserInfoData, connection, function(err, result) {
        if(err) {
            console.log(err); 
            callback(err, null);
             connection.release();
        }
        else if(!err && result == regData.username){
            callback(null, result);
            connection.release();
        }
        else {
            checkUserInfoData.colName = 'email';
            checkUserInfoData.colValue = regData.email;
            checkDBData.checkUserInfoFieldsExists(checkUserInfoData, connection, function(err, result) {
                if(err) {
                    console.log(err); //do something to setback flow
                    callback(err, null);
                    connection.release();
                }
                else if(!err && result == regData.email){
                    //
                    callback(null, result);
                    connection.release();
                } 
                else {
                    insertRegistration(regData, connection, function(err, result) {
                        callback(err, result);
                        connection.release();
                    });
                }
            });
        }   
    });

    let insertRegistration = function(regData, connection, done) {

        let regStoreData = {
            // here Registration Form Post data is Equalizing with Table columns 
        }; 

        connection.query('INSERT INTO registration SET ?', regStoreData, function(err, result) {
            if (err) {
                console.log(err);
                done(err, null); 
            }
            else {
                let loginTableFilled = false;
                let userinfoTableFilled = false;
                console.log(result);
                insertUserInfo(regData, connection, function(err, response){
                    if(err)
                        done(err, null);
                    else {
                        userinfoTableFilled  = true;
                    } 
                });

                inserLogin(regData, connection, function(err, response){
                    if(err)
                        done(err, null);
                    else {
                        loginTableFilled = true;
                    } 
                });
                if(loginTableFilled && userinfoTableFilled) {
                    done(null,'success')
                }
                //
            }
        });
    }

    let insertUserInfo = function(regData, connection, cb) {
        let userInfoTableData = {
           // here also user_info table column is defining with Post Registration details
        }

        connection.query('INSERT INTO user_info SET ?', userInfoTableData, function(err, result) {
            if (!err && result) {
                console.log(result.affectedRows); 
                cb(null, result.affectedRows);
            }
            else {
                console.log(err);
                cb(err, null); 
            }
        }); 
    }  

    let inserLogin = function(regData, connection, cb) {
        let loginTableData = {
           // here login table is updating from Registration detials
        }

        connection.query('INSERT INTO login SET ?', loginTableData, function(err, result) {
            if (!err && result) {
                console.log(result.affectedRows); 
                cb(null, result.affectedRows);
            }
            else {
                console.log(err);
                cb(err, null); 
            }
        }); 
    }    
}
重新评价谷歌,自我工作上面的代码就是一个学生尝试达到这个程度的证明。我已经看到,如果我们考虑过承诺,那么承诺是最好的解决方案,但我的编码水平在回拨本身就受到了冲击


感谢任何程度的帮助

伙计们。。。我在等。。还是。。。我每6到8小时访问一次此页面,以获取任何回复。。请无论如何帮助我。。