我正在使用React编写节点应用程序,使用node-postgres和superagent进行后端调用.假设我正在发出GET请求并使用它返回的JSON来填充学生表.我的API看起来像这样:
import pg from 'pg'; import Router from 'express'; let router = new Router(); let conString = "postgres://user:pass@localhost/db_name"; router.get('/getStudents', function(req, res) { var results = []; pg.connect(conString, function(err, client, done) { if (err) { done(); console.log(err); return res.status(500).json({success: false, data: err}); } var query = client.query('SELECT first_name, last_name, email FROM students'); query.on('row', function(row) { results.push(row); }); query.on('end', function() { done(); return res.json(results); }); }); });
在页面加载时,从商店调用此项来设置学生数组.这似乎出现了问题:
var request = require('super agent'); function getStudents() { request .get('/api/getStudents') .set('Accept', 'application/json') .end(function(err, res) { if (err) { console.log("There's been an error: getting students."); console.log(err); } else { return res; } }); }
如果我卷曲localhost:3000/api/getStudents
,我会得到我期望的JSON响应.
但是,当我在页面加载时调用它时,我收到一个ECONNREFUSED错误:
Error: connect ECONNREFUSED 127.0.0.1:80] code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 80, response: undefined
不知道为什么我在HTTP端口上收到错误.这是我第一次使用node-postgres,superagent和React,所以任何帮助都表示赞赏.
编辑:忘记提及我能够发出POST请求并将项目插入数据库而没有任何错误.只有在我尝试GET请求时才会出现此错误.
在get
方法中尝试以下操作(插入完整路径网址):
request .get('http://localhost:3000/api/getStudents') .set('Accept', 'application/json') .end(function(err, res) { if (err) { console.log("There's been an error: getting students."); console.log(err); } else { return res; } });
查阅CORS文档,获取使用绝对URL的示例:
https://visionmedia.github.io/superagent/#cors