【问题标题】:404 Not found error in Postgres and NodeJs api (May be duplicate)Postgres 和 NodeJs api 中的 404 Not found 错误(可能重复)
【发布时间】:2018-03-28 22:59:40
【问题描述】:

我是 Nodejs 的新手。我正在使用 node、express 和 Postgres DB 创建 api。

   const {Pool} = require('pg');



//const connectionString = process.env.DATABASE_URL || 'postgres://localhost:5432/springmvctutorial';

var http = require("http");
var express = require('express');
const router = express.Router();
const app = express();
var bodyParser = require('body-parser');

var apiVersion = '/api/v1/';


const poo = new Pool({
  database: 'springmvctutorial',
  host: 'localhost',
  user: 'postgres',
  password : 'root',
  port: 5432,
  max: 20,
  idleTimeoutMillis: 30000,
  connectionTimeoutMillis: 2000,
})



app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
}));

//create app server
var server = app.listen(3030,  "localhost", function () {
  var host = server.address().address
  var port = server.address().port
  console.log("Example app listening at http://%s:%s", host, port)
});


router.post('/api/v1/postData', (req, res, next) => {

  poo.connect((err, client, release) => {
    if (err) {
      return console.error('Error acquiring client', err.stack);
    }
    client.query('INSERT INTO items(text, complete) values(1,false)', (err, result) => {
      release();
      if (err) {
        return console.error('Error executing query', err.stack);
      }
      console.log(result.rows);
    });
  });

});

module.exports = router;

我的表和数据库已创建。我从 Postgres CLI 检查。但是当我使用节点 main.js 运行我的 main.js 文件时。它开始监听本地主机上的端口,但是当我开火时,

   http://127.0.0.1:3030/api/v1/postData

它给出了 404 资源未找到错误。

我从邮递员那里得到的信息是,

{
"text":"user@gmail.com",
"complete": true
}

【问题讨论】:

  • 你能给我们提供你正在点击的链接吗?如果它是发布的还是获取的?您是否尝试通过 localhost 访问它?
  • 我正在从本地主机尝试。这是发布请求。

标签: javascript node.js postgresql express


【解决方案1】:

这样试试,因为本机没有环境,所以没有测试

const {Pool} = require('pg');
//const connectionString = process.env.DATABASE_URL || 'postgres://localhost:5432/springmvctutorial';
var http = require("http");
var express = require('express');
const app = express();
var bodyParser = require('body-parser');

var apiVersion = '/api/v1/';
const poo = new Pool({
  database: 'springmvctutorial',
  host: 'localhost',
  user: 'postgres',
  password : 'root',
  port: 5432,
  max: 20,
  idleTimeoutMillis: 30000,
  connectionTimeoutMillis: 2000,
})
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
}));

//create app server
app.listen(3030,  "localhost", function () {
  var host = server.address().address
  var port = server.address().port
  console.log("Example app listening at http://%s:%s", host, port)
});


app.post('/api/v1/postData', (req, res, next) => {

  poo.connect((err, client, release) => {
    if (err) {
      return console.error('Error acquiring client', err.stack);
    }
    client.query('INSERT INTO items(text, complete) values(1,false)', (err, result) => {
      release();
      if (err) {
        return console.error('Error executing query', err.stack);
      }
      console.log(result.rows);
    });
  });

});

【讨论】:

  • 否@Basil,它不工作。它正在抛出 ReferenceError: server is not defined。我想,我们需要 var server 来获取地址和端口。
  • 好吧,我告诉你,因为我没有这台机器上的环境,请删除 var host = server.address().address var port = server.address().port 他们现在没用了如果您有任何更新,请告诉我:)
  • 删除服务器引用代码后。有效。你能告诉我为什么会这样,这样我以后就不会重复了,因为相同的代码正在与 MySql 一起工作。(服务器端口监听代码。)
猜你喜欢
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
相关资源
最近更新 更多