Не могу остановить функцию nodejs
У меня есть серверный серверный узел nodejs, который принимает целое число, а затем выполняет некоторый код. Моя проблема в том, что, если я отправляю строку, я все равно получаю ответ с кодом 200 с нулевыми данными.
Чтобы остановить функцию и отправить сообщение об ошибке, я пытаюсь проверить, является ли запрос if
а также else
заявления, но это не работает. Итак, можно ли сделать это так или есть лучший способ остановить выполнение и отправить ошибку?
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 ответ
Ваша проблема в том, что вы все равно анализируете параметр как число с плавающей точкой, так что даже если вы отправляете 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
ответ.