Я иду ва-банк и делаю проект, используя только node. Это было очень весело, но иногда я немного теряюсь в этом, и я хочу попытаться понять, как я запутался, поэтому я строю его правильно и не слишком перегружаюсь. Так или иначе, вот проблема:
У меня есть REST API, использующий Express и mysql. Я настроил mysql:
app.js
//Variables, move these to env
var dbOptions = {
host: config.db_config.host,
user: config.db_config.user,
password: config.db_config.password,
port: config.db_config.port,
database: config.db_config.database
};
app.use(myConnection(mysql, dbOptions, 'single'));
а затем я включаю свои маршруты, передавая маршруты промежуточному программному обеспечению приложения и журнала, чтобы я мог использовать их в маршруте:
app.js продолжение
var userRoute = require('./routes/users.js')(app,log);
app.use('/users', userRoute);
На самом деле это немного сбивало с толку, но теперь я понял, мне нужно передать их в модуль, чтобы модуль получил данные.
Затем в моем файле маршрута я хочу использовать объект, чтобы я мог использовать те же функции в других маршрутах, но в пользовательском файле, чтобы использовать тот же пул соединений, что и все остальное, или, по крайней мере, не нужно устанавливать снова установить соединение, я должен передать ему ответ и запрос? Должен быть лучший способ сделать это. Это действительно некрасиво. Вот соответствующая часть
маршруты /users.js
var User = require('../controllers/User.js');
module.exports = (function(app,log) {
var userR = express.Router();
userR.post('/register', function(req,res){
var email = req.body.email;
var password = req.body.password;
var firstName = req.body.first_name;
var lastName = req.body.last_name;
var userId;
try {
var query;
var status = 200;
var response = '';
var newUser = {
email: email,
password:password,
first_name: firstName,
last_name: lastName,
password: password
};
var user = new User(req,res);
user.register(newUser);
...
};
контроллеры/User.js
module.exports = function User(req,res) {
this.id = 0;
this.register = function(newUser){
var _this = this;
var deferred = q.defer();
req.getConnection(function(err,connection){
...
Здесь должен быть какой-то шаблон, который мне не хватает. Я должен просто иметь возможность передать приложение или что-то в этом роде и иметь доступ к req.getConnection и т.д.
Спасибо.