2017-07-31 102 views
0

我正在尝试使用节点JS获取API数据。我正在使用这个节点包来这样做。使用节点JS获取API数据

https://www.npmjs.com/package/cryptocompare

该包的文档是很容易的。

global.fetch = require('node-fetch') 
const cc = require('cryptocompare') 

cc.price('BTC', ['USD', 'EUR']) 
.then(prices => { 
    console.log(prices) 
}) 
.catch(console.error) 

我用npm.runkit.com测试过它,它工作。

但是,当我将软件包安装到我的应用程序中时,控制台中看不到任何输出。

我正在使用JetBrains WebStorm,这些是我采取的步骤。

  1. 创建新快报应用
  2. NPM安装-g表达发电机
  3. NPM安装--save节点取
  4. NPM安装--save cryptocompare
  5. NPM安装

然后在/routes/index.js内加入以下内容

var express = require('express'); 
var router = express.Router(); 
global.fetch = require('node-fetch'); 
const cc = require('cryptocompare'); 

/* GET home page. */ 

cc.price('BTC', ['USD']) 
    .then(prices => { 
     console.log(prices) 
}).catch(console.error); 

router.get('/', function(req, res, next) { 
    res.render('index', { 
     title: 'Example' 
    }); 
}); 

module.exports = router; 

但是在控制台日志中什么也没有显示。我试着将根目录下的global.fetch移动到app.js,但那也没有做任何事。

我在这里做错了什么?

+0

尝试摆脱你的第二个例子中的方括号。文档没有它们。 – spicypumpkin

+0

什么是方括号? 'USD'附近的那些? – Halnex

+0

mmhm它与“传递单一货币对”下的示例不同 – spicypumpkin

回答

2
var express = require('express'); 
    var router = express.Router(); 
    global.fetch = require('node-fetch'); 
    const cc = require('cryptocompare'); 

    /* GET home page. */ 


    router.get('/', function(req, res, next) { 
cc.price('BTC', ['USD']) 
     .then(prices => { 
    res.render('index', { 
      title: prices 
     }); 
    }).catch(console.error); 

    }); 

    module.exports = router; 

这将适用于你

+0

这将为'title'返回'[object Object]' – Halnex

+1

标题:prices.USD 使用这个,它会起作用。 –

+0

太棒了。我是MEAN堆栈的新手。我非常感谢你的耐心。 – Halnex

0

不知道为什么你没有得到任何东西。我尝试了相同的步骤并得到了结果。

我只是做了一件不同的事情,我将整个代码粘贴在一个名为abc.js的文件中。

,然后我跑了它在这样

abc.js

节点命令行,我得到这个结果

{USD:2797.06}

你能请再试一次,因为它对我来说很棒。如果您遇到任何问题,请告知我。

继续...

所以,如果你想在index.js使用它,那么你可以做这样的事情

cc.price('BTC', ['USD']) 
    .then(function(prices){ 
     console.log(prices) 
}).catch(function(error){ 
console.log(error); 
}); 

我只是改变了它了Syntex从ES6到ES5

+0

是的,我只是测试了这一点,它的工作原理。但我想将数据传递给'index.js'路线,最终能够在页面上而不是控制台上打印出数据。 – Halnex

+0

@Halnex哦,等等,我假设你正在看你的IDE控制台。您正在获取路由器的数据_outside_,这意味着这是在您的服务器开始运行时立即发生的。如果您将获取调用移动到路由器内部并在获取回调中呈现,您应该在浏览器控制台中看到数据。 – spicypumpkin

+0

@spicypumpkin我一直在试图将其移动到路由器中,并在'index.js'上呈现,但IDE始终抛出语法错误。我无法在'title'所在的数组中移动提取片段。 – Halnex

相关问题