从API中提取信息并将其添加到数据库(MEAN堆栈)

时间:2015-01-03 18:25:10

标签: javascript node.js mongodb mean-stack

我觉得自己像个完整的白痴,但是我和朋友正在一起完成一个项目并且无法获得第一条路径来返回Etsy API请求的项目并让getAllListings将项目添加到数据库中。如果你能看到明显我们做错的事情,请告诉我。

我还应该提一下,虽然语句console.dir(body)确实将项目打印到终端,但看起来内容不会传递给GET '/api/etsy/getListings'

谢谢!

routes.js

//this i want to return a list of active listings from the users shop.

app.get('/api/etsy/getListings',function(req, res){
    bEtsy.getAllListings(req, res, function(err, body) {
    });
  res.json(req.body);
});

bEtsy.js

var standardCallback = function (err, status, body, headers, callback) {
  if (err) {
    console.log(err);
    return callback(err, null);
  }

  if (body) {
    console.dir(body);
    return callback(null, body);  // this gives me an error
  }
} 


var getAllListings = function(itemId, callback){
  var Item = mongoose.model('Item');
  var listingsParams = {
    include_private: true
  }

  etsy.auth().get(
    '/shops/'+etsy.shop+'/listings/active', 
    listingsParams, 
    function(err, status, body, headers){
      var newi = new Item({name: body.title, stock: body.count, owner: "00000000000000000000", 
        etsy:{listingId: body.listing_id, stock: body.count}});
      newi.save(function(err){
        if (err) return handError(err);
      });
      standardCallback(err, status, body, headers, callback);
    }
  );
}; 

1 个答案:

答案 0 :(得分:1)

你用三个参数调用这个函数,只需要两个

bEtsy.getAllListings(req, res, function(err, body) {
});

最重要的是,第一个参数itemId正在传递请求对象,然后它也从未在函数本身内使用,但是一些名为listingsParams的全局变量是?!?