无法停止nodejs功能

时间:2017-11-23 18:21:35

标签: node.js webtask

我有一个nodejs无服务器后端,它接受一个整数然后执行一些代码。我的问题是,如果我发送一个字符串,我仍然得到一个带有空数据的200代码响应。

要停止该功能并发送错误消息,我试图检查该请求是否是ifelse语句的整数,但它不起作用。那么,有可能这样做,还是有更好的方法来停止执行并发送错误?

app.post('/xrp', (req, res) => {
  axios.get('https://www.surbtc.com/api/v2/markets/btc-clp/ticker')
    .then(response => {
      var clpbtc = parseFloat(response.data.ticker.min_ask[0]);
      if (typeof clpbtc === 'number') {
        coinTicker('bittrex', 'XRP_BTC')
        .then(response => {
          var xrpbtc = response.rawData.Bid;
          var exchangeRate = clpbtc * xrpbtc;
          if (xrpbtc) {
            var cantidadCLP = req.body.numero;
            var cantidadXRP = parseFloat(req.body.numero) / exchangeRate;
            var fee = 0.025;
            var oppositeFee = 0.975
            var totalCompraXRP = cantidadXRP * oppositeFee;
            res.status(200).json({ "cantidadCLP" : cantidadCLP, "cantidadXRP" : cantidadXRP, "fee": fee, "oppositeFee": oppositeFee, "totalCompraXRP": totalCompraXRP})
          } else {
            res.sendStatus(500).send("No válido2")
          }
        })
        .catch(error => {
            res.sendStatus(500).json(error);
        })
      } else {
        res.sendStatus(500).send("No válido")
      }
    })
    .catch(error => {
        res.sendStatus(500).json(error);
    });
  });

1 个答案:

答案 0 :(得分:0)

您的问题是您无论如何都要将参数解析为浮点数,因此即使您发送string,它也会转换为number,您的查询将只返回数据,因此空响应。

parseFloat('This is a string')
// => NaN

typeof parseFloat('This is a string')
// => 'number'

这是javascript的奇怪属性,其中typeof NaN == 'number'

为了适应这种情况,请将您的代码更改为以下内容:

.then(response => {
      var clpbtc = parseFloat(response.data.ticker.min_ask[0]);
      if (!isNaN(clpbtc)) {
        coinTicker('bittrex', 'XRP_BTC')

现在,如果你传入一个字符串,你应该得到一个500响应。