Node.js PostgreSQL集成-TypeError:无法读取未定义的属性“状态”

我正在尝试实现一个简单的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,尽管我不知道为什么会这样。

非常感谢!

zouminfeng 回答:Node.js PostgreSQL集成-TypeError:无法读取未定义的属性“状态”

您需要修改代码以获取查询结果,然后尝试呈现页面。 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 )
};
本文链接:https://www.f2er.com/2921327.html

大家都在问