用于mysql连接的模块导出

时间:2016-01-14 11:41:35

标签: javascript html mysql node.js

我一直在玩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();

4 个答案:

答案 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)

根据https://github.com/felixge/node-mysql您需要致电

client.connect();

在createConnection之后和第一次查询之前。

答案 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();