2017-07-14 23 views
1

我正在學習nodejs,並且正在創建一個服務器,使用名爲Coin-Ticker的npm來獲取加密貨幣的價格。我想使用我在Angular應用程序中獲取的數據,但它不會在html中顯示數據。這是我的代碼:使用nodejs和cointicker將數據保存到json

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; 

感謝您的幫助!

+0

你在控制檯中遇到什麼錯誤?來自終端的任何日誌?你的index.html中有什麼?另外'router.get((req,res)=> {'似乎錯了......你需要一個路徑作爲我認爲的第一個參數。 – lxe

+0

感謝你的回覆@lxe。終端沒有任何日誌,html是隻是接收數據 我試圖按照這個例子:https://scotch.io/tutorials/mean-app-with-angular-2-and-the-angular-cli –

+0

客戶端和服務器是獨立的應用程序。確定您的服務器應用程序是否返回預期的數據,如果確實如此,您的問題就出現在客戶端應用程序中 –

回答

1

這是因爲硬幣自動收報器在當時返回json所以當你正在做res.status(200).json(posts.data);它返回undefined。只需用res.status(200).json(posts)代替它,它應該可以工作

也是你不可以做router.get((req, res) => { 你需要一個在此之前的路徑。我試着用 router.get('/convert', (req, res) => {這個代碼嘗試了以上的改變

+0

感謝您的幫助,但它並不起作用,html和控制檯沒有顯示任何信息。遵循:scotch.io/tutorials/mean-app-with-angular-2-and-the-angular-cli 如果我按照這個例子一步一步的工作,但不是當我嘗試使用cointicker。 –

+0

確定只是要清楚如果你給前綴加上'/ change',那麼當你調用它時,就需要用url「/ api/convert」來調用它。要檢查你的服務器是否在終端上工作,只需寫'curl「localhost:3000/api/convert」'(使用正確的端口而不是3000),看看你是否得到了正確的響應,或者你可以去頁面「本地主機:3000/API /轉換」 –