基本上,每次有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()
回调中的错误,并且您可能希望在渲染中使用查询结果。