尝试使用Node.js和node-postgres获取PSQL数据库时出现ECONNREFUSED错误

e0bqpujr  于 2022-10-15  发布在  Node.js
关注(0)|答案(1)|浏览(205)

在使用浏览器对数据库表中的所有条目发出GET请求时,我收到以下错误:
错误:在TCPConnectWap处连接ECONNREFUSED 127.0.0.1:5432连接AS onCompleteGet/Products中出错
相关的文件夹结构如下所示:

server/
  db/
    index.js
  routes/
    products.js
  index.js

涉及的文件包括:
服务器/index.js

const express = require("express");
const cors = require("cors");
const app = express();

const PORT = process.env.port || 3001;

app.use(cors());
app.use(express.json());

// const usersRouter = require('./routes/users')
// app.use('/users', usersRouter)
// const authRouter = require('./routes/auth')
// app.use(['/login', '/register'], authRouter)
const productsRouter = require('./routes/products')
app.use('/products', productsRouter)
// const cartsRouter = require('./routes/carts')
// app.use('/carts', cartsRouter)
// const ordersRouter = require('./routes/orders')
// app.use('/orders', ordersRouter)

app.listen(PORT, () => {
  console.log(`Listening on ${PORT}`);
});

在端口3001上初始化服务器并创建ProductsRouter。
服务器/db/index.js

const { Pool, Client } = require("pg");

const pool = new Pool({
  user: "postgres",
  host: "localhost",
  database: "ecommerce",
  password: "postgres",
  port: "5432",
});

module.exports = {
  query: (text, params, callback) => {
    return pool.query(text, params, callback)
  },
}

提供查询功能。
服务器/路径/产品.js

const express = require("express");
const products = express.Router();
const db = require("../db/index");

products.get("/", async (req, res) => {
  try {
    const products = await db.query("SELECT * FROM products");
    return res.status(201).send(products.rows);
  } catch (err) {
    console.log(err.stack);
    console.log("Error in GET /products");
    res.status(500).send("Server Error Occurred");
  }
});

提供使用DB.Query调用发出请求的Node.js逻辑。
产生错误的步骤:
1.在本地主机的5432端口启动/连接Postbird。
1.在服务器/index.js上运行‘node index.js’,启动侦听端口3001的Node.js服务器。
1.在浏览器中导航到本地主机:3001/Products以发起GET请求。

ftf50wuq

ftf50wuq1#

自学成才的程序员。因此,当Codecademy告诉我安装Windows Subsystem for Linux(WSL)时,我并没有意识到它实际上是一个基本上与我的主操作系统独立的系统。我在VS Code中使用WSL的终端,当我运行‘node index.js’时,index.js正在WSL上运行。因此,它不知道在我的主操作系统的5432端口上运行的非常好、完全可访问的PostgreSQL示例。
基本上,它拒绝连接到WSL上的端口5432,因为没有任何Postgres示例在WSL的该端口上侦听;事实上,它甚至没有安装在WSL上。
我切换到我的Bash终端,运行‘node index.js’,将浏览器导航到调用GET请求的URL,GET请求返回数据库中所有表的SELECT结果,瞧!啊,真灵。

相关问题