Использование knex с выражением, как я могу получить доступ к результатам запроса knex?Как получить доступ к результатам запроса knex
Пример:
var bots = []
response = knex.select('id', 'name').from('robots')
.then(function(robots){
console.log(robots);
bots = robots
});
console.log(bots)
Это будет регистрировать роботов, но не не обновлять bots
массив, который является пустым.
EDIT:
В синхронном обходного пути в экспресс-маршрут, я застрял экспресс блок внутри блока knex:
router.get('/robots', function (req, res) {
response = knex.select('id', 'name').from('robots').then(function(bots){
res.render('robots/index', {
page_title: 'All Robots',
robots: bots
}); // res.render
}); // knex.select
}); // router.get
Является ли это рекомендуемая модель?
Функция обратного вызова функции 'then' является асинхронной, в основном она вызывается, когда доступны результаты из db, и узел продолжает обрабатывать ваш код, если есть какое-либо среднее время. Я думаю, вы, должно быть, заметили, что вы получили в терминале первые неопределенные результаты. Просто найдите несколько уроков об async nodejs – Molda
Я бы не задал действие/запрос 'knex' переменной (в вашем случае' response'). Поскольку «knex» основан на Promise, выполняйте и устанавливайте переменные в компоненте 'then()' (или 'catch()' для ошибок). Итак, если вы хотите иметь переменную 'response', я бы установил' var response' перед запросом базы данных 'knex', а затем, затем и внутри' then() ', я бы установил' response' для независимо от того, что вы хотите от результата запроса «knex». – kuanb