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