节点js和eBay API实现

时间:2014-05-28 05:15:02

标签: javascript node.js browser npm ebay

我是一个节点JS初学者,我需要帮助将控制台日志数据导出到HTML页面。

我在GitHub上找到了这个很好的例子:https://github.com/benbuckman/nodejs-ebay-api

我的问题是:我设法根据我的需求实现它 - 但我没有设法从控制台日志中提取数据!我只是想在浏览器中显示它而不是在控制台日志中。

有什么建议吗?

目前正在研究"单身"例子 - 到目前为止,这是我的代码,它有很多错误:

// example simple request to FindingService:findItemsByKeywords

var ebay = require('../index.js');
var http = require('http');

var express = require('express');
var app = express();
var io = require('socket.io');


app.set('port', process.env.PORT || 5000);

app.get('/get', function(req, res) {
    console.log('inside get');
//  for avoiding crossbrowser-error
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    res.header('Content-Type','application/json');
var params = {};

params.keywords = [ "cat"];
params['paginationInput.entriesPerPage'] = 10;
ebay.ebayApiGetRequest({
    serviceName: 'FindingService',
    opType: 'findItemsByKeywords',
    appId: 'MYAPPID',      // FILL IN YOUR OWN APP KEY, GET ONE HERE: https://publisher.ebaypartnernetwork.com/PublisherToolsAPI
    params: params,
   // filters: filters,
    parser: ebay.parseItemsFromResponse    // (default)
  },
  // gets all the items together in a merged array
  function itemsCallback(error, items) {
    if (error) throw error;

    console.log('Found', items.length, 'items');

    for (var i = 0; i < items.length; i++) {
      console.log('- ' + items[i].title);
    }  
  }
);
});


http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

console.log('Listening on port 5000...');

1 个答案:

答案 0 :(得分:2)

您似乎正在使用Express,并在网址/get上指定一个GET API端点。据我所知,您希望看到浏览器的输出,而不仅仅是控制台(您可以通过console.log消息查看的控制台)。 Express将返回发出HTTP请求的用户res.send()。例如,如果您要添加:

res.send("hello");

到`app.get&#39;的结尾功能,你会看到&#34;你好&#34;在浏览器中。请注意,您只能这样做一次,因此您需要将要发送的所有信息捆绑到对象中的浏览器中,然后发送。

您希望看到的是从itemsCallback函数中收集的数据。所以为了简单起见,你可以发回items。例如:

function itemsCallback(error, items) {
    if (error) throw error;

    console.log('Found', items.length, 'items');

    for (var i = 0; i < items.length; i++) {
        console.log('- ' + items[i].title);
    }

    res.send(items);  // sends the items in the HTTP response
}

作为旁注,您不需要包含http模块,而是可以像这样启动服务器:

app.listen(app.get('port'), function() {
    console.log('Express server listening on port ' + app.get('port'));
});