0

mysqlモジュールをインポートしましたapp.js

var mysql = require('mysql');

次に、構成を設定しmysqlます。

// Database configuration

var HOST            = 'localhost';
var PORT            = 3306;
var MYSQL_USER      = 'root';
var MYSQL_PASS      = 'pass';
var DATABASE        = 'ruchevits_website';

作成されたmysqlクライアントオブジェクト:

// Create database client

var db = mysql.createClient({
    host:       HOST,
    port:       PORT,
    user:       MYSQL_USER,
    password:   MYSQL_PASS
});

そして私のデータベースを選択しました:

// Use database

db.query('use ' + DATABASE);

これで、次のようなクエリを実行できます。

db.query('select id, firstname, lastname from mytable', function(err, result, fields){
    if (err)
    {
        throw err;
    }
    else
    {
        console.log('Selected people:');
        for (var i in result)
        {
            var people = result[i];
            console.log(people.firstname + ' ' + people.lastname);
        }
    }
});

ただし、ですべてのクエリを実行するのは不便ですapp.js

routesセクション内の特定のファイルでそれらを実行したい:

exports.index = function(req, res)
{
    // MySQL query

    res.render('resume', {
        title: 'Resume'
    });
};

それを行う正しい方法は何ですか?

dbファイルにないオブジェクトを使用する必要がありapp.jsます。実際、問題はそれをどのように渡すかです。

4

1 に答える 1

2

モジュールを作成し、dbオブジェクトを返す関数をエクスポートします。

dbConnection.js

var mysql = require('mysql');
var db = null;
module.exports = function () {
    if(!db) {
        db = mysql.createClient({
            host:       HOST,
            port:       PORT,
            user:       MYSQL_USER,
            password:   MYSQL_PASS
        });
    };
    return db;
};

var db = require('./dbConnection')();必要な場所で使用してください。また、Node.jsモジュールのキャッシュ機能http://nodejs.org/api/modules.html#modules_cachingも確認してください。

于 2012-08-27T20:00:18.640 に答える