i'm using mysql nodejs project.
here sql code:
var mysql = require('mysql'); var config = { host: 'localhost', username: 'root', password: 'root', port: 8889, database: "bookdb", connectionlimit: 100, charset: 'utf8_general_ci', dialect: "mysql" }; var pool = mysql.createpool({ connectionlimit: config.connectionlimit, host : config.host, user : config.username, password : config.password, database : config.database, port : config.port, charset : config.charset, dialect : config.dialect }); module.exports.pool = pool; here database query code. insert database 3 tables: user, profile, activity, respectively. problem is: run 2 queries, , last query never touch. print error show nothing.
for example: if insert (user, profile, activity). activity table cannot insert. if insert (user, activity, profile). profile table cannot insert. means insert code each table correct.
var async = require('async'); var pool = require('../config/mysql').pool; var createuser = function createuser (username, password, email, firstname, lastname, avatarurl, // user table quote, about, homepage, // profile table lastloginip, // activity table callback) { // database connection var dbc; // user id later reference var userid; var datecreated = new date(); var dateupdated = datecreated; async.waterfall([ // connection function (callback) { pool.getconnection(callback); }, // insert user table function (connection, callback) { dbc = connection; var params = { username: username, password: password, emailaddress: email, firstname: firstname, lastname: lastname, avatarurl: avatarurl, datecreated: datecreated, dateupdated: dateupdated }; var query = "insert user set ?"; dbc.query(query, params, callback); }, // insert activity table function(result, callback) { userid = result.insertid; console.log('second user id: ' + userid); var params = { activityid: userid, profileview: 0, lastloginip: lastloginip }; var query = "insert activity set ?"; dbc.query(query, params, callback); }, // insert profile table function (result, callback) { // userid = result.insertid; console.log('inserted userid: '+ userid); var params = { profileid: userid, quote: quote, about: about, homepage: homepage, datecreated: datecreated, dateupdated: dateupdated }; var query = "insert profile set ?"; dbc.query(query, params, callback); }, function (error, userdata) { console.log('end block'); if (dbc) dbc.release(); if (error) { console.log('error'); report_error(error); } else { callback(null, userdata); } } ]); }; module.exports.createuser = createuser; please figure out problem.
thanks :)
you should put callback function outside waterfall array. this:
var async = require('async'); var pool = require('../config/mysql').pool; var createuser = function createuser (username, password, email, firstname, lastname, avatarurl, // user table quote, about, homepage, // profile table lastloginip, // activity table callback) { // database connection var dbc; // user id later reference var userid; var datecreated = new date(); var dateupdated = datecreated; async.waterfall([ // connection function (callback) { pool.getconnection(callback); }, // insert user table function (connection, callback) { dbc = connection; var params = { username: username, password: password, emailaddress: email, firstname: firstname, lastname: lastname, avatarurl: avatarurl, datecreated: datecreated, dateupdated: dateupdated }; var query = "insert user set ?"; dbc.query(query, params, callback); }, // insert activity table function(result, callback) { userid = result.insertid; console.log('second user id: ' + userid); var params = { activityid: userid, profileview: 0, lastloginip: lastloginip }; var query = "insert activity set ?"; dbc.query(query, params, callback); }, // insert profile table function (result, callback) { // userid = result.insertid; console.log('inserted userid: '+ userid); var params = { profileid: userid, quote: quote, about: about, homepage: homepage, datecreated: datecreated, dateupdated: dateupdated }; var query = "insert profile set ?"; dbc.query(query, params, callback); } ], function (error, userdata) { console.log('end block'); if (dbc) dbc.release(); if (error) { console.log('error'); report_error(error); } else { callback(null, userdata); } } )}; module.exports.createuser = createuser;
Comments
Post a Comment