Я новичок в обещаниях и Q, и я пытаюсь преобразовать маршрут, который использует query
в node-mysql
. Вот выдержки из моего кода:Почему мое обещание Q не работает?
var Q = require('q');
// connection defined elsewhere
router.get('/', function(req, res) {
var query = Q.denodeify(connection.query);
var promise = query("-- query ommitted --", [req.user.id]);
promise.then(console.log, console.error);
});
Я пытаюсь преобразовать это из существующей настройки, который не использует обещания, так что я знаю, что соединение установлено правильно и запрос является действительным. Всякий раз, когда я пытаюсь запросить этот маршрут, я получаю то же сообщение в STDERR:
[TypeError: Cannot read property 'connectionConfig' of undefined]
Я не знаю, где он идет от так что я не знаю, как найти полную трассировку стека. Я также попробовал альтернативную версию этого кода, где у меня была моя собственная функция вместо console.log
и console.error
, но эта функция никогда не вызывалась и возникала такая же ошибка.
Как я уже сказал, я конвертирую этот код из существующего не обещанного кода. Этот код использовал пул просто отлично. Кроме того, у меня есть другие маршруты, которые по-прежнему используют старый код, который использует один и тот же пул без проблем. – Greg
@Greg См. Мой обновленный ответ на использование 'Q.nbind'. –
Это помогло мне решить мою проблему, используя Promise. 'var query = Promise.denodeify (connection.query.bind (connection))' - та же идея привязать объект соединения к функции. – Federico