Tag: knex.js

试图使用node.js和mysql连接到每个用户的不同数据库 – 最好使用一个池

我是相当新的nodejs,knex,书架等,目前正在开发一个networking应用程序,将连接到一个不同的mysql数据库基于哪个用户login。 第一个连接工作正常,然后我注销,并在退出代码我做knex.destroy()。 当我去login时,我得到一个Unhandled rejection Error: There is no pool defined on the current client 看起来knex不会重新创build池,即使它被重新初始化也不会被销毁。 有没有人试过这个,知道怎么做? 我已经尝试初始化没有数据库,并添加一个当用户login,但连接似乎没有连接到数据库。 我已经尝试实例化与数据库的新连接而不破坏以前,这导致用户使用第一个用户的数据库。 销毁连接将删除MySQL连接,甚至与正确的数据库build立新的连接,但显然没有池。 从阅读它看起来像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 { […]

我可以有条件地将一个where()子句添加到我的knex查询中吗?

我想在我的查询中添加一个where()子句,但是有条件的 。 具体而言,我希望它只有在URL中传递了特定的查询string参数时才添加。 这是可能的,如果是的话,我会怎么做呢? router.get('/questions', function (req, res) { knex('questions') .select('question', 'correct', 'incorrect') .limit(50) .where('somecolumn', req.query.param) // <– only if param exists .then(function (results) { res.send(results); }); });