parseFloat () возвращает NAN для ввода JSON - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть следующий запрос JSON.Я использую bodyParser.json () и экспресс.Мне нужно использовать эти данные запроса в логике /get.

{
    "type": "A",
    "longitude": "23",
    "latitude": "40"
}

, и я пытаюсь проанализировать долготу и широту в nodejs.Ниже мой кусок кода

app.use(bodyParser.json());
app.get('/api/second', function(request, response) {
    var locationType = request.body.type;
    var longitude = parseFloat(request.body.longitude);
    var latitude =  parseFloat(request.body.latitude);

Когда я делаю консольный журнал, он показывает мне NAN, который должен появиться, если вход не может быть проанализирован, но здесь они являются цифрами.Я пробовал parseInt в каком-то другом коде, и он работал нормально для меня.Я также пытаюсь добавить 10 к обеим переменным, как это, но поскольку долгота сама по себе не работает, я не могу продолжать дальше.

    var longHigh = longitude+parseFloat('10');

1 Ответ

1 голос
/ 26 сентября 2019

Работает нормально, когда я пытаюсь, поэтому я могу только догадываться, что вы пропустили соответствующие значения в request.body.Убедитесь, что значения request.body.longitude и request.body.latitude являются ожидаемыми.

Используйте app.post(...) вместо app.get(...).Пример показан ниже:

index.js

const app = require("express")();
const morgan = require("morgan");
const bodyParser = require("body-parser");

app.use(morgan("dev"));
app.use(bodyParser.json());
// app.use(bodyParser.urlencoded({ extended: true })); // if using urlencoded format
app.post("/api/second", (req, res) => {
  return res.send({
    longitude: parseFloat(req.body.longitude),
    latitude: parseFloat(req.body.latitude),
  });
});

app.listen(3000, () => console.log("Listening on :3000"));

Запрос Content-Type: application/json

{
    "longitude": "30.2",
    "latitude": "21.4"
}

Ответ, который я получаю

{
    "longitude": 30.2,
    "latitude": 21.4
}
...