1
我剛剛注意到我的一個函數被多次調用,即使我只使用它一次。該功能是createWallet
。在調用它之後,我最終得到了具有該用戶標識的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);
});
});
功能activateAccount在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.");
});
});
});
};
最後創建小工具
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(如果您使用的是)預先獲取網址,那麼您可能會點擊兩次。嘗試使用不同的瀏覽器,或者使用'curl'命中該網址。 – Adam
您是否確認具體是指多次調用一個函數,而不是路由或控制器? – JJJ