1
私はただ一度使っても、私の関数の中の1つが複数回呼び出されていることに気付きました。機能はcreateWallet
です。それを呼び出した後、私はそのユーザーIDを持つ2-5個の財布を持つデータベースになります。Node.jsで関数が複数回呼び出されます
アイデアはちょうど彼のアカウントを有効に利用者のためのただ一つ、 "財布" を作成することで、ここにコードがある:
ルート
app.get('/api/activateAccount', function(req, res){
var mail = req.query.mail;
var db = require('../controllers/loginController');
db.activateAccount(mail, function(result){
res.json(result);
});
});
LoginController
exports.activateAccount = function(mail, callback){
pool.getConnection(function(err, connection){
if(err){
console.log(err);
callback(true);
return;
}
connection.query("UPDATE usuarios SET activo = 1 WHERE correo = ?", [mail], function(err, results) {
result = results;
if(err){
console.log(err);
}
connection.query("SELECT id_usuario AS id FROM usuarios WHERE correo = ?", [mail], function(err, results) {
result = results;
if(err){
console.log(err);
}
connection.release();
createWallet(result[0].id); //this is the only place i call createWallet
callback("Thank you for confirming your mail you can now Log In with your account.");
});
});
});
};
の機能activateAccountそして最後にウォレットを作成する
function createWallet(id_usuario){
var new_wallet = {
id_usuario: id_usuario,
coins: 0
};
var string = "NULL";
pool.getConnection(function(err, connection){
if(err){
console.log(err);
callback(true);
return;
}
connection.query('INSERT INTO usuarios_citypoints SET ?', new_wallet, function(err, results){
connection.release();
if(err) {
console.log(err);
callback(true);
return;
}
return;
});
});
};
なぜこれが起こりますか?
あなたは、ユーザーが既に起動された場合に有効かどうか、そのURLを呼び出していません複数回も複数のウォレットが作成されます。 – Shaharyar
私は何か間違って見ることができません。もしあなたがそれを使っていれば、ChromeはURLを先読みしているので、二度ヒットするかもしれません。別のブラウザを使用するか、curlを使用してそのURLにアクセスしてみてください。 – Adam
ルートやコントローラではなく、複数回呼び出されるのは特にその機能であることを確認しましたか? – JJJ