Где я должен определить свой клиент MySQL в приложении Node.js (Express)? - PullRequest
5 голосов
/ 06 января 2012

В настоящее время я устанавливаю клиентское соединение для node-mysql, выполнив следующие действия в моем app.js и специальном config/environment.js:

var client = mysql.createClient({
  user:     'USER',
  database: 'DATABASE',
  password: 'PASSWORD',
  host:     'HOST'
});

app.configure(function(){
  ...
  app.set('client', client);
  ...
});

Затем в моем клиентском коде я просто вызываю app.settings.client, чтобы использовать клиент MySQL.

Я не уверен, что это правильный подход, и он, конечно, не работает, когда я делаю тестирование, так как мне нужен работающий экземпляр приложения.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 07 января 2012

На мой взгляд, есть 3 решения:

a) Как @Raynos предложил в комментариях, используйте app.set(key, value);, чтобы установить значение в БД, а затем app.set (ключ), чтобы получить это значение.,б) Оберните ваши маршруты в функцию, которая принимает базу данных в качестве параметра.Пример:

sample_route.js

module.exports = function (db) {
  return function(req, res, next) {
    // db is accessible here
  }
}

app.js

var = sample_route = require('./sample_route')(db);
app.get('/sample', sample_route);

c) Создайте глобальную переменную, которая будет доступна везде (но не рекомендуется): global.MY_DB = ...;

2 голосов
/ 06 января 2012

Я думаю, что более типичным способом сделать это было бы определение простого промежуточного программного обеспечения, которое устанавливает клиент mysql в качестве свойства запроса. Например:

var client = mysql.createClient({
      user:     'USER',
      database: 'DATABASE',
      password: 'PASSWORD',
      host:     'HOST'
    })

app.use(function(req, res, next) {
    req.mysql = client;
    next();
});

Тогда в ваших обработчиках маршрутов вы можете получить доступ к req.mysql. В ваших тестовых случаях вам просто нужно каким-то образом настроить req.mysql, это должно быть довольно просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...