2016-07-21 5 views
0

В основном я хотел бы сделать запрос внутри моего маршрутизатора каждый раз, когда есть запрос на получение. Я попробовал это, и некоторые вариантыЗапрос внутри Get router in Node Express

var express = require('express'); 
var router = express.Router(); 
var pg = require('pg'); 

router.get('/:listaId', function (req, res, next) { 
if (error) return next(error); 
var cc = new pg.Client({ 
    user: "@@", 
    password: "@@", 
    database: "@@", 
    port: 5432, 
    host: "@@", 
    ssl: true 
}); 
client.connect(function (err) { 
    if (err) { 
     return console.error('could not connect to postgres', err); 
    } 
    cc.query('select * from userls', function (err, result1) { 

     console.log("Ok", result1.rows, err) 

    }) 
}) 
res.render('mas', { 
    title: 'Lista', 
    subtitle: 'CreateBla', 
    subs: 'a', 
    lev: 's' 
})}) 

Но запрос никогда не вызывается, в основном это идет непосредственно к визуализации.

Как я могу подождать ответа на запрос перед рендерингом? Это неправильный подход?

ответ

1

Как я могу ждать ответа на запрос перед рендерингом? Это неправильный подход ?

Вы должны поместить res.render() внутри обратного вызова запроса, где, как известно, ваши данные:

var express = require('express'); 
var router = express.Router(); 
var pg = require('pg'); 

router.get('/:listaId', function (req, res, next) { 
    if (error) return next(error); 
    var cc = new pg.Client({ 
     user: "@@", 
     password: "@@", 
     database: "@@", 
     port: 5432, 
     host: "@@", 
     ssl: true 
    }); 
    client.connect(function (err) { 
     if (err) { 
      return console.error('could not connect to postgres', err); 
     } 
     cc.query('select * from userls', function (err, result1) { 

      console.log("Ok", result1.rows, err) 
      res.render('mas', { 
       title: 'Lista', 
       subtitle: 'CreateBla', 
       subs: 'a', 
       lev: 's' 
      }) 

     }) 
    }) 
}) 

Кроме того, ваш код выглядит немного странно, что вы используете client в одном месте и в другой cc и вы должны проверять наличие ошибок в обратном вызове cc.query(), и вы предположительно хотите использовать результаты запроса в рендере.

+0

ОК я изменил все на клиента, это было ошибкой из-за cmd + z, так или иначе я пробовал код и все равно никогда не входил в запрос («Хорошо»), и теперь он также больше не отображает страницу ... – BioShock

+0

Получается ли это даже при обратном вызове соединения? Кроме того, вам не нужно дожидаться завершения обратного вызова соединения перед выполнением запроса. См. Этот [пример] (https://github.com/brianc/node-postgres/wiki/Client#simple-query-with-row-callback) – Will

Смежные вопросы