mysql节点js任务 – SELECT EXISTS查询

这个逻辑有什么问题?

var selectString = 'SELECT EXISTS(SELECT 1 FROM users WHERE user="'+username+'")'; var queryUserExists = connection.query(selectString); var resultsLength = queryUserExists._results.length; console.log(queryUserExists); if(resultsLength > 0){ socket.write("fail user already exists"+"\r\n"); } else { console.log('insert='); var query = connection.query ( 'INSERT INTO users '+ 'SET user = ?, password = ?, token = ?', [username, password, token] ); socket.write("success"+"\r\n"); } 

resultsLength总是返回零。 什么是使用此查询的正确方法?

返回对象:

 sql: 'SELECT 1 FROM users WHERE user = \'a new user is my name\' ORDER BY user LIMIT 1', typeCast: true, nestTables: false, _resultSet: null, _results: [], _fields: [], _index: 0, _loadError: null } 

正确的代码:感谢https://stackoverflow.com/users/722783/mahmoud-gamal为优化的数据库查询!

 connection.query("SELECT 1 FROM users WHERE user = '"+username+"' ORDER BY user LIMIT 1", function (error, results, fields) { if (error) { console.log(error); socket.write("fail internal error"+"\r\n"); } if (results.length > 0) { console.log('fail'); socket.write("fail user already exists"+"\r\n"); } else { console.log('insert'); var query = connection.query ( 'INSERT INTO users '+ 'SET user = ?, password = ?, token = ?', [username, password, token] ); socket.write("success"+"\r\n"); } console.log(results); }); 

尝试这个:

 SELECT 1 FROM users WHERE EXISTS (SELECT 1 FROM users WHERE user = 'username') ORDER BY user LIMIT 1; 

或者:为什么不:

 SELECT 1 FROM users WHERE user = 'username' ORDER BY user LIMIT 1; 

注意:

 ORDER BY user LIMIT 1; 

只是为了performance。