Node Express中Get路由器内部的查询



基本上,每次有get请求时,我都想在路由器内部进行查询。我试过这个和一些变体

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

但查询从未被调用,基本上它直接进入渲染。

如何在呈现之前等待查询的答案?这是一种错误的方法吗?

如何在呈现之前等待查询的答案?这是错的吗方法

您必须将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()回调中的错误,并且您可能希望在渲染中使用查询结果。

最新更新