2015-04-10 3 views
0

Я создаю веб-приложение, которое позволяет пользователю войти в систему, используя учетные данные, хранящиеся в базе данных mysql. Затем, когда они идут в/crm, я пытаюсь передать значение поля, которое указывает, к какой базе данных, к которой пользователь имеет доступ, для создания экземпляра подключения к книжной полке/кнуте.Попытка передать аутентифицированного пользователя контроллеру базы данных в nodejs с книжной полкой

crmDB.js

var knex= require('knex')({ 
    client: 'mysql', 
    connection:{ 
     host: 'localhost', // your host 
     user: 'the user', // your database user 
     password: 'the password, // your database password 
     database: req.user.db, // the database name per the user.db field 
     charset: 'UTF8_GENERAL_CI' 
    } 
}); 

var Bookshelf = require('bookshelf')(knex); 

module.exports.crmDB = Bookshelf; 

я могу это сделать? Что я ставлю на свой маршрут?

var crm = function (req, res, next) { 
    if(req.isAuthenticated()){ 


    } else { 
     res.redirect('/signin'); 
    } 
} 
+0

То, что я сделал экспортируется пользователю и требуется пользователю crmDB. Я не знаю, хорошо ли это с этим справиться, и я не очень далеко продвинулся, чтобы узнать, работает ли он/достаточно. – Peter

ответ

0

в route.js

var crm = function (req, res, next) { 
    if(req.isAuthenticated()){ 
     var user = req.user; 
     module.exports = { 
      user:user 
     }; 
     var crmModel = require('../server/models/crm'); 
    } else { 
     res.redirect('/signin'); 
    } 
} 

Тогда в crmDB.js

var db = require('../../client/routes').user.toJSON().db; 

var knex= require('knex')({ 
    client: 'mysql', 
    connection:{ 
     host: 'localhost', // your host 
     user: 'user', // your database user 
     password: 'password', // your database password 
     database: db, 
     charset: 'UTF8_GENERAL_CI' 
    } 
});