2015-12-08 14 views
5

Düğüm sonrası bildirimleri ve arka uç aramaları için süper ayırıcı kullanarak React ile bir düğüm uygulaması yazıyorum. Diyelim ki bir GET talebi yapıyorum ve JSON'u kullanarak bir öğrenci tablosunu doldurmak için geri dönelim. Benim API şunun gibi:Uygulamada GET isteği oluştururken ECONNREFUSED, ancak API, JSON'u başarıyla döndürüyor

import pg from 'pg'; 
import Router from 'express'; 
let router = new Router(); 
let conString = "postgres://user:[email protected]/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); 
    }); 
    }); 
}); 

Yüklemede, bu bir öğrenci dizisini ayarlamak için depodan çağrılır. Ben localhost:3000/api/getStudents kıvrılırsa

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; 
     } 
    }); 
} 

, ben bekliyoruz JSON yanıt almak: şeylerin yanlış burada oluyor gibi görünüyor. Ben sayfa yüklemesinde bu çağırdığınızda

Ancak, ben bir ECONNREFUSED hata alıyorum:

Error: connect ECONNREFUSED 127.0.0.1:80] 
code: 'ECONNREFUSED', 
errno: 'ECONNREFUSED', 
syscall: 'connect', 
address: '127.0.0.1', 
port: 80, 
response: undefined 

Ben HTTP bağlantı noktasında bir hata alıyorum neden emin değilim. Bu benim ilk defa düğüm postgres, superagent ve React kullanıyorum, böylece herhangi bir yardım takdir edilir.

Düzeltme: POST isteklerini yapabildiğimi ve herhangi bir hata olmadan veritabanına öğe ekleyebileceğimi bildirmekten bahsetmiştim. Bu hata, yalnızca bir GET isteğini denediğimde ortaya çıkar.

+2

sen açtın: kullanarak mutlak URL'lerin bir örnek için

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; } }); 

Kontrol dışarı CORS belgelerine 80 numaralı portu mu? Bir ana bilgisayar ve bağlantı noktası belirtmediğiniz ve bağlantı noktasının 3000 olmasını istemediğiniz sürece 80: localhost için süper aracı varsayılan değeri gibi görünüyor. – Quy

+0

Bunu nasıl başardığını biliyor musunuz, @Quy? Herhangi bir belge ya da superagent ile portu ayarlama örnekleri bulamıyorum. .set ('port', 5432) 've 'set'i (' port ', 3000)' denedim, ama şimdiye kadar hiç şans yoktu. Önerin için teşekkürler. – johnprisco

+0

'request.get'i deneyin (' http: // localhost: 3000/api/getStudents ') ' – Quy

cevap

4

get yönteminde (tam yol url ekleme) bu deneyin:

https://visionmedia.github.io/superagent/#cors

+1

Teşekkürler, bunu nasıl uygularım üzerinde çalıştım. Şaşırtıcı olmayan bir şekilde, En iyi uygulamalara tepki vermeme bağlı değildim, bu yüzden bazı refactoring yaptım ve tam URL olmadan çalıştı. Yardım ettiğin için teşekkür ederim! – johnprisco

İlgili konular