0
たとおりに動作していません。Node.jsの非同期コールバック関数は、私がKnex.jsとMySQLを使ってNode.jsの中登録ページをデザインしようとしていますReqiured
登録ページ `
router.post('/', function(req, res, next){
var fname = req.body.fname;
var mname = req.body.mname;
var lname = req.body.lname;
var email = req.body.email;
var uname = req.body.uname;
var pwd = req.body.password;
var conf_pwd = req.body.conf_password;
var tnc = req.body.tnc;
var errors = req.validationErrors();
//Validation
req.checkBody('fname', 'The First Name is Required').notEmpty();
req.checkBody('mname', 'The Middle Name is Required').notEmpty();
req.checkBody('lname', 'The Last Name is Required').notEmpty();
req.checkBody('uname', 'The Username is Required').notEmpty();
req.checkBody('email', 'The Email is Required').notEmpty();
var rand = Math.floor(Math.random()*90000) + 10000;
//hash The password
var hashpassword = crypto.createHash('sha512').update(pwd).digest('hex');
var IdVal = email+uname;
var IdHash = crypto.createHash('sha512').update(IdVal).digest('hex');
var tstamp = new Date().toString();
//Add The User
if(errors){
res.render('register', {
errors: errors
});
}else{
var newUser = ({
Id: IdHash,
FirstName: fname,
MiddleName: mname,
LastName: lname,
Email: email,
UserName: uname,
HashPassword: hashpassword,
ActivationCode: rand.toString(),
ActivationStatus : false,
});
User.CheckUser(uname, function(stat){
console.log('Stat : ',stat);
if(stat == 1){
res.render('register', {
uerrors: "The Username Already Exists"
});
}else if(stat == 2)
{
res.render('register', {
uerrors: "Error Occured"
});
}
else if(stat == 0){
User.CreateUser(newUser, function(err){
if (err){ throw err}
else{
res.render('register', {
message: "Verification Email Sent Please Check Email"
});
}
});
}
});
}
});
だから私は何を募集するとユーザ名が存在するかどうかを確認です: は、ここでは、コードです。そうでない場合は、新しいユーザーを作成し、そのユーザーが作成されたことを示します。そして、ここでは正確にuser.jsの中の関数が最初に実行なっていることが起こっているし、ユーザー名が既に存在していることを示しているものをここで
module.exports.CheckUser = function(uname, callback){
knex('Clients')
.where({UserName: uname})
.select()
.then(function(result){
if(!result || !result[0]){
console.log('User Not Found');
callback(0);
}else{
if(result[0].UserName == uname){
callback(1);
}
}
})
.catch(function (err){
console.log(err);
callback(2);
});
}
module.exports.CreateUser = function(newUser, callback){
knex('Clients')
.insert(newUser)
.catch(function (err){
callback(err);
});
}
user.jsの
、内のコードです。しかし、ユーザー名は作成されたばかりです。ここでは
GET /register 304 670.944 ms - -
GET /bootstrap/css/bootstrap.min.css 304 9.677 ms - -
GET /dist/css/AdminLTE.min.css 304 7.780 ms - -
GET /plugins/iCheck/square/blue.css 304 7.291 ms - -
GET /plugins/jQuery/jQuery-2.2.0.min.js 304 2.312 ms - -
GET /bootstrap/js/bootstrap.min.js 304 2.259 ms - -
GET /plugins/iCheck/icheck.min.js 304 2.076 ms - -
GET /bootstrap/fonts/glyphicons-halflings-regular.woff2 304 0.468 ms - -
GET /plugins/iCheck/square/blue.png 304 0.439 ms - -
{ method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 'q' ],
__knexQueryUid: '99707783-2767-4c37-ae4c-0bd31f98427d',
sql: 'select * from `Clients` where `UserName` = ?' }
User Not Found
Stat : 0
{ method: 'insert',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings:
[ '41040',
false,
'[email protected]',
'q',
'2e96772232487fb3a058d58f2c310023e07e4017c94d56cc5fae4b54b44605f42a75b0b1f358991f8c6cbe9b68b64e5b2a09d0ad23fcac07ee9a9198a745e1d5',
'70b32fc5adc4d2fa6ad5a40d9b6bfe4acc745d0c9c71d47a8266a4d54868198acb29644dc6133fb51cd682dcf1fc72a52278a51ade397ed7f2a38f8ec809e0bf',
'q',
'q',
'q' ],
__knexQueryUid: 'dee0340f-c247-4608-a29e-da984cc13e49',
sql: 'insert into `Clients` (`ActivationCode`, `ActivationStatus`, `Email`, `FirstName`, `HashPassword`, `Id`, `LastName`, `MiddleName`, `UserName`) values (?, ?, ?, ?, ?, ?, ?, ?, ?)' }
POST /register - - ms - -
{ method: 'select',
options: {},
timeout: false,
cancelOnTimeout: false,
bindings: [ 'q' ],
__knexQueryUid: 'a58fe912-3a9e-4af0-85ca-e1ba2aa9559b',
sql: 'select * from `Clients` where `UserName` = ?' }
Stat : 1
POST /register 200 105.596 ms - 3234
少し多すぎるコード。 –
整数で作業するのではなく、エラーの最初のコールバック規則に固執することがあります。 'コールバック(エラー、結果)' – jruts