在 Node Express 中获取路由器内部查询
2016-07-21
620
基本上,每次有 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'
})})
但查询从未被调用,基本上它直接进入渲染。
我如何在渲染之前等待查询的答案? 这是一种错误的方法吗?
1个回答
How can i wait the answer of the query before rendering? Is it a wrong approach?
您必须将
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()
回调中的错误,并且您可能希望在渲染中使用查询结果。
jfriend00
2016-07-21