我正在尝试实现一个简单的postgresql/Node.JS站点,但是,在postgreSQL中执行查询以插入网页时,我遇到了有关查询.js文件中的res对象的TypeError。
我创建了一个路由/用户.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;
然后我有一个配置/查询.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未定义,尽管我不知道为什么会这样。
非常感谢!
您需要修改代码以获取查询结果,然后尝试呈现页面。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 )
};