Nodejs mysql无法执行查询
nodejs mysql not able to execute query
我正在使用这个包:https://github.com/mysqljs/mysql
this_obj.pool。getConnection似乎根本无法执行,因为我将console.log放入。
MyLib.prototype.device_table_get_username = function(this_obj, user_id) {
return new Promise(function (resolve, reject) {
var sql = "select username from laravel_device where id = " + "'" + user_id + "'";
console.log();
console.log("---------");
console.log(sql);
// NOTE: ----------- it seems not running at all here. -----------------
this_obj.pool.getConnection(function(err, connection) {
console.log("1. no output here");
connection.query(sql, function(err, rows, fields) {
console.log("2. no output here");
connection.release();
if (err) throw err;
var msg_obj = {
rows: rows
};
resolve(msg_obj);
});
});
});
}
完整代码
var config = require("../config.js");
var Promise = require('bluebird');
var mysql = require("mysql");
var ON_DEATH = require('death');
// Constructor
function MyLib() {
// var
this.db_username = config.db_username;
this.db_password = config.db_password;
this.db_name = config.db_name;
this.db_host = config.db_host;
this.pool = null;
}
MyLib.prototype.connect_mysql = function() {
this.pool = mysql.createPool({
connectionLimit: 400,
host: this.db_host,
user: this.db_username,
password: this.db_password,
database: this.db_name
});
}
// close mysql
MyLib.prototype.close_mysql = function() {
this.pool.end(function (err) {
// all connections in the pool have ended
});
}
MyLib.prototype.clean_up = function() {
var this_obj = this;
ON_DEATH(function(signal, err) {
console.log();
console.log("---- script interupted ----");
console.log("close mysql");
this_obj.close_mysql();
});
}
MyLib.prototype.run = function() {
var this_obj = this;
this.mqtt_acl_get_rows().then(function(msg_obj){
var rows = msg_obj.rows;
// http://stackoverflow.com/questions/28736452/bluebird-promise-serial-iteration-and-resolve-to-modified-array
this_obj.map_series(this_obj, rows, this_obj.process_mqtt_acl_row).then(function(){
// finish
process.exit();
});
});
}
MyLib.prototype.device_table_get_username = function(this_obj, user_id) {
return new Promise(function (resolve, reject) {
var sql = "select username from laravel_device where id = " + "'" + user_id + "'";
console.log();
console.log("---------");
console.log(sql);
// NOTE: ----------- it seems not running at all here. -----------------
this_obj.pool.getConnection(function(err, connection) {
console.log("1. no output here");
connection.query(sql, function(err, rows, fields) {
console.log("2. no output here");
connection.release();
if (err) throw err;
var msg_obj = {
rows: rows
};
resolve(msg_obj);
});
});
});
}
MyLib.prototype.user_table_get_username = function(user_id) {
var this_obj = this;
return new Promise(function (resolve, reject) {
var sql = "select username from laravel_users where id = " + "'" + user_id + "'";
console.log();
console.log("---------");
console.log(sql);
// NOTE: ----------- it seems not running at all here. -----------------
this_obj.pool.getConnection(function(err, connection) {
connection.query(sql, function(err, rows, fields) {
connection.release();
if (err) throw err;
var msg_obj = {
rows: rows
};
resolve(msg_obj);
});
});
});
}
MyLib.prototype.process_mqtt_acl_row = function(this_obj, value, index, length) {
var row_id = value.id;
var user_id = value.user_id;
var mqtt_user_type_id = value.mqtt_user_type_id;
var is_device = 2;
var is_human = 1;
if(mqtt_user_type_id == is_device) {
console.log("-device-");
this_obj.device_table_get_username(this_obj, user_id).then(function(msg_obj){
var rows = msg_obj.rows;
console.log(msg_obj);
});
}
else if(mqtt_user_type_id == is_human) {
console.log("-human-");
this_obj.user_table_get_username(user_id).then(function(msg_obj){
var rows = msg_obj.rows;
console.log(msg_obj);
});
}
else {
console.log("process_mqtt_acl_row, not calling");
}
return value;
}
// http://stackoverflow.com/questions/28736452/bluebird-promise-serial-iteration-and-resolve-to-modified-array
MyLib.prototype.map_series = function(this_obj, things, fn) {
var results = [];
return Promise.each(things, function(value, index, length) {
// value
// value == { id: 303, user_id: 4, mqtt_user_type_id: 1 }
// call fn
var ret = fn(this_obj, value, index, length);
// push result
results.push(ret);
return ret;
});
}
MyLib.prototype.mqtt_acl_get_rows = function() {
var this_obj = this;
return new Promise(function (resolve, reject) {
var sql = "select id, user_id, mqtt_user_type_id from laravel_mqtt_acl order by id asc";
console.log();
console.log("---------");
console.log(sql);
// NOTE: this one is working
this_obj.pool.getConnection(function(err, connection) {
connection.query(sql, function(err, rows, fields) {
connection.release();
if (err) throw err;
var msg_obj = {
rows: rows
};
resolve(msg_obj);
});
});
});
}
module.exports = MyLib;
更新1 我把它从connectionLimit: 400
变成了connectionLimit: 4
。它似乎能够连接。我将做更多的测试
尝试使用MySQL数据库首先在config/db中编写数据库代码,如
var config = require('./config');
var mysql = require('mysql');//mysql连接
//CONFIGURATION FOR CREATING POOL
var pool = mysql.createPool({
connectionLimit:config.connectionLimit,
host: config.host,
user: config.user,
password: config.password,
database: config.database
});
module.exports = pool;
//在你想要使用它的其他文件中
var pool = require('../config/db');
pool.getConnection(function (err, connection) {
if (!err)
{
email = req.user.email
connection.query('delete from notification where user_id=(select id from users where email=?)', [email],
function (err, noti_data){
if (!err)
{
deleted_device = noti_data.affectedRows
console.log('User Logout Successfully...');
res.json({'code': 200, 'status': 'Success', 'message': 'User Logout Successfully...'});
logger.info('URL=', URL.url, 'Responce=', 'User Logout Successfully...', 'Email id=', email);
return;
}
else
{
console.log('Error for deleting and selecing details..', err);
res.json({'code': 200,'status': 'Error','message': 'Error for deleting and selecing details..'});
logger.error('URL=',URL.url, 'Responce=','Error for deleting and selecing details..','Email id=', email);
return;
}
});
connection.release();
}
else
{
Errors.Connection_Error(res);
}
});
相关文章:
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- 在node.js-mysql中执行UPDATE查询不起作用
- onchange选择get value并执行查询,然后在同一页面上显示结果
- AJAX 请求不会在 400 个错误查询上执行失败
- 关闭浏览器时使用 ajax 执行查询的解决方案
- 使用 Javascript 在 MongoDB 中使用希腊字符执行查询不会返回任何结果
- 节点JS-异步-响应是在执行查询时发送的
- NodeJS-如何通过执行查询获得mysql结果
- SSE和Ajax轮询在浏览器中执行查询而不是js代码的区别
- Sequelize——如何按顺序执行查询
- 在Symfony2中使用Typeahead + Bloodhound和FOSJsRoutingBundle执行查询
- 如何在jQuery成功的情况下执行查询?
- Javascript自执行查询函数
- Nodejs mysql无法执行查询
- 自动执行查询
- javascript承诺汇集连接并执行查询
- Websql 事务中的多个执行查询是否异步运行
- 我如何在猫鼬执行查询
- 对每个循环项执行查询并等待结果
- 在加载页面上执行查询