Express:从外部请求显示值作为响应

时间:2018-01-09 16:58:17

标签: node.js rest express callback

我使用cryptocompare npm包时有以下功能:

getPrice: function(coin){
  cc.price(coin, 'USD')
  .then(prices => {
    console.log(prices);
    return prices;
  }).catch(console.error)
}
// https://github.com/markusdanek/crypto-api/blob/master/server/helper/cryptocompare.js

现在我想设置一台Express服务器来打开http://localhost:9000/current并显示当前的“价格”。

所以我的控制器看起来像这样:

module.exports = {
    getCurrentPrice: function(req, res, next) {
      getPrice('ETH', function(price);
    }
};
// https://github.com/markusdanek/crypto-api/blob/master/server/controllers/CryptoController.jshttps://github.com/markusdanek/crypto-api/blob/master/server/controllers/CryptoController.js

我的路线:

var controllers = require('../controllers'),
    app = require('express').Router();

    module.exports = function(app) {
        app.get('/current', controllers.crypto.getCurrentPrice);
    };

当我现在打开http://localhost:9000/current时,我只在我的控制台中获得当前价格,但不在我的浏览器中。

如何设置对值的响应?

我尝试了但失败了:

module.exports = {
    getCurrentPrice: function(req, res, next) {
      getPrice('ETH', function(price){
        res.status(200).json(price);
      });
    } 
};

我猜这是调用回调的错误方法..我是否必须修改我的帮助函数或其他任何东西?

我的项目也在Github上进一步参考:https://github.com/markusdanek/crypto-api

1 个答案:

答案 0 :(得分:1)

下面的

可以帮到你

module.exports = {
    getCurrentPrice: function(req, res, next) {
      cc.price('ETH', 'USD')
        .then(prices => {
          console.log(prices);
            res.json(prices)
        })
        .catch(err=>{
            console.error(err)
            return next(err);
        })
    }
};