2016-07-21 14 views
0

Grundsätzlich möchte ich eine Abfrage in meinem Router jedes Mal, wenn es eine Anfrage erhalten. Ich habe versucht, diese und einige VariantenAbfrage innerhalb 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' 
})}) 

Aber die Abfrage wird nie aufgerufen, im Grunde geht es direkt auf die Wiedergabe.

Wie kann ich die Antwort der Abfrage vor dem Rendern warten? Ist es ein falscher Ansatz?

Antwort

1

Wie kann ich die Antwort der Abfrage vor dem Rendern warten? Ist es ein falscher Ansatz?

Sie haben die res.render() innerhalb der Abfrage Rückruf zu setzen, wo Ihre Daten bekannt:

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' 
      }) 

     }) 
    }) 
}) 

Auch sieht der Code ein wenig seltsam, dass Sie client an einem Ort und cc in einem anderen verwenden und Sie sollten auf Fehler in Ihrem cc.query()-Rückruf überprüfen und Sie möchten die Abfrageergebnisse in Ihrem Rendern möglicherweise verwenden.

+0

Ok ich änderte alles zu client, es war ein Fehler wegen cmd + z, trotzdem probierte ich den Code und trotzdem ging es nie in die Abfrage ("Ok"), und jetzt rendern die Seite auch nicht mehr ... – BioShock

+0

Kommt es überhaupt zum connect Callback? Außerdem müssen Sie nicht wirklich auf den Verbindungsrückruf warten, bevor Sie die Abfrage ausführen. Siehe hierzu [Beispiel] (https://github.com/brianc/node-postgres/wiki/Client#simple-query-with-row-callback) – Will