我是nodejs,knex,bookshelf等的新手,我目前正在开发一个基于用户登录的连接到不同mysql数据库的Web应用程序.
第一个连接工作正常,然后我退出并在注销代码中我做knex.destroy().当我重新登录时,我得到了一个
Unhandled rejection Error: There is no pool defined on the current client
似乎knex一旦被破坏就不会重建池,即使它被重新初始化.
有没有人试过这个,知道怎么做?
我尝试在没有数据库的情况下进行初始化,并在用户登录时添加一个,但连接似乎没有连接到数据库.我已经尝试在不破坏前一个的情况下实例化与数据库的新连接,这导致用户使用第一个用户的数据库.销毁连接会删除MySQL连接,甚至与正确的数据库建立新连接,但显然没有池.
从阅读看来,knex似乎不是为了做到这一点,但肯定必须有一种方法来实例化与新池的新连接?
我正在使用护照本地代码片段
passport.use(new LocalStrategy({
usernameField: 'email',
passwordField: 'password'
},
function(email, password, done) {
new userModel.User({email: email}).fetch().then(function(data) {
var user = data;
if(user === null) {
return done(null, false, {message: 'Invalid username or password'});
} else {
user = data.toJSON();
if(!bcrypt.compareSync(password, user.password)) {
return done(null, false, {message: 'Invalid username or password'});
} else {
ctrl = new DB();
ctrl.connect(user.db);
dbModel = require('../server/models/dbModel');
return done(null, …Run Code Online (Sandbox Code Playgroud)