我正在尝试实现一个简单的postgresql / Node.JS网站,但是,当在postgreSQL中执行查询以插入到网页中时,遇到关于query.js文件中res对象的TypeError。
我已经创建了一个route / users.js文件,该文件呈现了站点并指定了'user'变量,如下所示:
const express = require('express');
const router = express.Router();
const request = require('request');
const db = require('../../config/queries');
router.get('/', (req, res, next) =>
res.render('users', {
users: db.getUsers
})
);
module.exports = router;
然后我有一个config / queries.js文件,该文件执行查询并将结果返回到上述文件:
const pool = require('./db');
const getUsers = (req, res) => {
pool.query('SELECT * FROM users ORDER BY id ASC', (error, results) => {
if (error) {
throw error;
}
console.log(results.rows);
res.status(200).json(results.rows);
});
};
module.exports = {
getUsers
};
最后html站点是这样写的:
<p> Hello world</p>
<ul> {{users}} 99999 </ul>
当我加载页面localhost:5000 / users时,在控制台正确记录用户数据的同时,发生以下错误
TypeError: Cannot read property 'status' of undefined
然后页面显示:
你好世界
99999
出现错误是因为未定义res.status(200).json(results.rows)中的res,尽管我不知道为什么会这样。
非常感谢!
答案 0 :(得分:1)
您需要修改代码以获取查询结果,然后尝试呈现页面。 getUsers 不会立即返回结果,而是会在回调中返回。 因此,正确的版本可能是这样的:
router.get('/', (req, res, next) =>
getUsers((error,result)=>
{
if (error) {
throw error;
}
console.log(results.rows);
res.render('users', {
users: results.rows
})
})
);
const getUsers = (callback) => {
pool.query('SELECT * FROM users ORDER BY id ASC',callback )
};