我一直在玩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();
答案 0 :(得分:4)
您可以使用:
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.
});
});
答案 1 :(得分:2)
在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);
});
执行回调后,连接将打开。这是节点的核心概念之一。
要使用此功能,请导入连接模块并使用如下界面:
var db = require("./connectMysql");
db.getConnection(function(err, connection) {
// here u can run queries
});
然后确保MySQL createClient只运行一次,并保存连接,以便下次某个模块想要使用它。
答案 2 :(得分:0)
答案 3 :(得分:0)
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();