mysql连接的模块导出
Posted
技术标签:
【中文标题】mysql连接的模块导出【英文标题】:module export for mysql connection 【发布时间】:2016-04-19 17:30:33 【问题描述】:我一直在使用 Node.js,并且正在使用 node-mysql 编写一些测试应用程序。我正在尝试编写一个自动与数据库建立连接的模块,这样我就不必一次又一次地编写连接代码。这是我写的:
var mysql = require('mysql');
module.exports = function(mysql)
var client = mysql.createConnection(
host: 'localhost',
user: 'root',
password: '12345'
);
return client;
但是当我尝试将此文件导入我的另一个 *.js 文件时,我收到一个错误:
~/work : $ node queryInfo.js
/Users/socomo22/work/queryInfo.js:3
client.connect();
^
TypeError: undefined is not a function
at Object.<anonymous> (/Users/socomo22/work/queryInfo.js:3:8)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
由于我是 Node.js 的新手,我不确定自己做错了什么。请帮忙!
queryInfo.js // 需要上述模块的代码
var client = require('./connectMysql');
client.query("USE node");
client.query("INSERT INTO test(content) VALUES(?)", ['the content'],
function(err, info)
if(err)
return handle_error(err);
console.log(info.insertId);
);
client.query('UPDATE test SET content = ?', ['new content'], function(err, info)
if(err)
return handle_error(err);
console.log(info.insertId);
);
client.end();
【问题讨论】:
你在哪一行得到这个错误? queryInfo.js 的第 3 行出现错误。 您是否尝试过示例中定义的简单方法github.com/felixge/node-mysql#introduction 是的,先生,这很好。但我很好奇它是否可以以这种方式工作。 【参考方案1】:你可以用这个:
Config.js
var mysql = require('mysql');
var config;
config =
mysql_pool : mysql.createPool(
host : 'hede',
user : 'hede',
password : 'hede',
database : 'hede'
)
;
module.exports = config;
当你使用这个 js。你可以这样使用;
var mysqlConf = require('config.js').mysql_pool;
mysqlConf.getConnection(function (err, connection)
connection.query('YOUR QUERY' ,[FIELDS], function (err, rows)
connection.release(); //---> don't forget the connection release.
);
);
【讨论】:
【参考方案2】:connectMySQL.js
const mysql = require('mysql');
const con = mysql.createConnection(
host: "YOUR_HOST",
user: "YOUR_USER",
password: "YOUR_PASSWORD",
database: "YOUR_DATABASE_NAME"
);
con.connect(function(err)
if (err) throw err;
console.log("Connected!");
);
module.exports = con
index.js
const con = require('./connectMySQL');
con.query("YOUR_QUERY", function (err, result, fields)
if (err) throw err;
console.log(result);
);
con.end();
【讨论】:
【参考方案3】:在 node.js 中打开数据库连接通常是异步的。我不知道那个模块,但是从连接到数据库中寻找连接的事件或回调。 然后让您的 MySQL 函数将回调函数作为参数。在这里你传递连接。
编辑:
如果连接尚未打开,MySQL 包通过临时排队查询来处理异步连接。但是,打开 MySQL 连接的推荐方法是:
var connection = mysql.createConnection(
host : 'example.org',
user : 'bob',
password : 'secret'
);
connection.connect(function(err)
if (err)
console.error('error connecting: ' + err.stack);
return;
console.log('connected as id ' + connection.threadId);
);
一旦执行回调,连接就会真正打开。这是node的核心概念之一。
要使用它,请导入连接模块并具有如下界面:
var db = require("./connectMysql");
db.getConnection(function(err, connection)
// here u can run queries
);
然后确保 MySQL createClient 只运行一次,并保存连接以供下次某些模块要使用它时使用。
【讨论】:
嗯,如果您能用一些代码解释一下,我将不胜感激。由于我是非阻塞式编程的新手,因此会有很大帮助。 在哪里关闭连接?【参考方案4】:根据https://github.com/felixge/node-mysql你需要打电话
client.connect();
在 createConnection 之后和第一个查询之前。
【讨论】:
我在 createConnection 之后添加了这一行,现在我在这一行出现错误。未定义的函数。 是felixge/node-mysql 你用的是什么?从我的答案中的链接?以上是关于mysql连接的模块导出的主要内容,如果未能解决你的问题,请参考以下文章
Python 2.7_初试连接Mysql查询数据导出到exce_20161216