繁体   English   中英

如何在node.js视图中执行MySQL查询?

[英]How to execute MySQL queries in node.js views?

我在app.js导入了mysql模块:

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执行所有查询app.js

我想在以下部分的特定routes文件中执行它们:

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

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

这样做的正确方法是什么?

我需要在app.js文件中使用db对象。 实际上,问题是如何通过它?

创建一个模块并导出一个返回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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM