2017-07-14 4 views
1

Ich lerne Nodejs und ich erstelle einen Server, um den Preis von Cryptocurrencies mit einem npm namens Coin-Ticker zu bekommen. Ich möchte die Daten verwenden, die ich in einer Angular-App erhalte, aber die Daten werden nicht im HTML-Code angezeigt. Dies ist mein Code:Speichern von Daten in Json mit Nodejs und Cointicker

server.js

const express = require('express'); 
const path = require('path'); 
const http = require('http'); 
const bodyParser = require('body-parser'); 
const coinTicker = require('coin-ticker'); 

const api = require('./server/routes/api'); 

const app = express(); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

app.use(express.static(path.join(__dirname, 'dist'))); 

app.use('/api', api); 

app.get('*', (req, res) => { 
    res.sendFile(path.join(__dirname, 'dist/index.html')); 
}); 


const port = process.env.PORT || '3000'; 
app.set('port', port); 

const server = http.createServer(app); 

server.listen(port,() => console.log(`API running on localhost:${port}`)); 

api.js

const express = require('express'); 
const router = express.Router(); 
const coinTicker = require('coin-ticker'); 

/* GET api listing. */ 
router.get('/', (req, res) => { 
    res.send('api works'); 
}); 

router.get((req, res) => { 
    coinTicker('bitfinex', 'BTC_USD') 
    .then(posts => { 
     res.status(200).json(posts.data); 
    }) 
    .catch(error => { 
     res.status(500).send(error) 
    }); 
}); 

module.exports = router; 

Vielen Dank für Ihre Hilfe!

+0

Welche Fehler bekommen Sie in der Konsole? Irgendwelche Protokolle vom Terminal? Was ist in deiner index.html? Auch 'router.get ((req, res) => {' scheint falsch ... Sie brauchen einen Pfad als erstes Argument, das ich denke. – lxe

+0

danke für Ihre Antwort @lxe. Kein Protokoll überhaupt vom Terminal und der HTML ist Ich habe versucht, dem Beispiel zu folgen: https://scotch.io/tutorials/mean-app-with-angular-2-and-the-angular-cli –

+0

Der Client und der Server sind unabhängige Anwendungen. Ermitteln Sie, ob Ihre Server-Anwendung die erwarteten Daten zurückgibt. Wenn dies der Fall ist, liegt Ihr Problem in der Client-Anwendung. –

Antwort

1

Es ist, weil Münzticker die JSON in der dann so zurückgibt, wenn Sie res.status(200).json(posts.data); tun, kehrt es undefined zurück. Ersetzen Sie das nur durch res.status(200).json(posts) und es sollte funktionieren

Auch können Sie nicht tun router.get((req, res) => { Sie brauchen einen Pfad vor diesem. Ich habe versucht, diesen Code mit router.get('/convert', (req, res) => { und mit den oben genannten Änderungen funktioniert

+0

Danke für Ihre Hilfe, aber es funktioniert nicht. Das HTML und die Konsole zeigen keine Informationen an. Dies ist das Tutorial, das ich versucht habe folgen: scotch.io/tutorials/mean-app-with-angular-2-and-the-angular-cli Wenn ich diesem Beispiel Schritt für Schritt folge, funktioniert es, aber nicht, wenn ich versuche, cointincker zu verwenden. –

+0

ok gerade deutlich sein Wenn Sie dem Präfix "/ change" hinzufügen, muss es beim Aufruf aufgerufen werden. Dies muss mit der URL "/ api/convert" erfolgen. Um zu überprüfen, ob Ihr Server im Terminal funktioniert, schreiben Sie einfach "curl" localhost: 3000/api/convert "' (machen Sie den richtigen Port anstelle von 3000) und sehen Sie, ob Sie die richtige Antwort erhalten oder die Seite gehen könnte " localhost: 3000/api/konvertieren " –

Verwandte Themen