Nodejs + Q promise +方法根据urltypes返回

我使用节点js作为后端,也使用q promise包。

问题:我正在尝试获取第三方产品详细信息。 1. www.abcd.com 2. www.xyz.com – 这个方法我在后台处理。

可能的url:

  1. ?本地主机:8080 /searchtypes= “ABCD”;
  2. ?本地主机:8080 /searchtypes= “XYZ”;
  3. 本地主机:8080 /search;

    如果上面的URLtypes是abcd,则意味着需要search一些不同的thridparty(www.abcd.com)http url;

    如果上面的URLtypes是xyz,则意味着需要search其他一些不同的thridparty(www.xyz.com)http url

    如果上面的URL没有获得types意味着需要searchwww.abcd.com,如果结果find意味着然后返回响应,如果结果未find意味着需要调用www.xyz.comurl,然后返回响应。 (注意 – 这里有两个第三方API需要调用)

码:

router.get('/search', function(req, res, next) { if (!( typeof req.query === 'undefined' || req.query === null || req.query == "")) { var type = req.query; } var spec = { resp : {} }; Q(spec).then(function(spec) { var deferred = Q.defer(); var optionsget = { host : 'abcd.com', method : 'GET' }; var reqGet = https.request(optionsget, function(res) { var getProductInfo = ''; res.on('data', function(d) { getProductInfo += d; }); res.on('end', function() { if (( typeof message == 'undefined') && (!( typeof items === 'undefined' || items === null))) { spec.resp.list = items; deferred.resolve(spec); } else { spec.resp.message = message; deferred.reject(spec); } }); }); reqGet.end(); reqGet.on('error', function(e) { console.log(e); deferred.reject(spec); }); return deferred.promise; }).then(function(spec) { var deferred = Q.defer(); var optionsget = { host : 'xyz.com', method : 'GET' }; var reqGet = https.request(optionsget, function(res) { var getProductInfo = ''; res.on('data', function(d) { getProductInfo += d; }); res.on('end', function() { if (( typeof message == 'undefined') && (!( typeof items === 'undefined' || items === null))) { spec.resp.list = items; deferred.resolve(spec); } else { spec.resp.message = message; deferred.reject(spec); } }); }); reqGet.end(); reqGet.on('error', function(e) { console.log(e); deferred.reject(spec); }); return deferred.promise; }).then(function(spec) { spec.resp.status = 'Success'; res.send(spec.resp); }).fail(function(spec) { spec.resp.status = 'Error'; res.send(spec.resp); }); }); 

我这是个寒冷的问题。 我明白需要检查types和实现。 我认为我们需要为(abcd和xyz)添加一些不同的function,然后可以根据types调用该方法。

请build议好方法。