Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NodeJS Post Request - Numbers in params returning NaN

I'm newish to NodeJS. Trying to make a POST request, but all the integers in the params are being passed as NaN. On the second line below, you can see in the request that actual numbers are assigned to the params, but then the first line where the post request is happening, all the numbers are NaN. What am I missing here?

2018-08-06T20:44:24.391354+00:00 app[web.1]: Executing (default): INSERT INTO "public"."meetings" ("id","requestor_id","requestee_id","lang_one_id","lang_two_id","meeting_time","accepted","status","requestor_score","requestee_score") VALUES (DEFAULT,NaN,NaN,NaN,NaN,'2018-08-06 20:44:24.000 +00:00',false,'Active',0,0) RETURNING *;
2018-08-06T20:44:24.401308+00:00 app[web.1]: POST /api/meetings/createMeeting?requestor_id=32&requestee_id=1&meeting_time=2018-08-16%2013:00:00&location=NYC&location_address=NYC&lang_one_id=1&lang_two_id=2 500 59.324 ms - 1272

Controller:

meetings.createMeeting = (req, res) => {
  const { requestor_id, requestee_id, meeting_time, accepted, location, location_address, status, lang_one_id, lang_two_id } = req.body;
  let data = {
    requestor_id: parseInt(requestor_id),
    requestee_id: parseInt(requestee_id),
    meeting_time: Date(meeting_time),
    accepted: false,
    location,
    location_address,
    status: "Active",
    lang_one_id: parseInt(lang_one_id),
    lang_two_id: parseInt(lang_two_id),
    requestor_score: parseInt(0),
    requestee_score: parseInt(0),
    created_at: Date.now(),
    updated_at: Date.now()
  };
  models.Meetings.create(data)
    .then(response => {
      res.status(200).json({ status: 200, message: response });
    })
    .catch(error => {
      res.status(500).json({ status: 500, err: error });
    });
};

When I change to req.params none of the data is present:

2018-08-06T21:11:21.830182+00:00 app[web.1]: Executing (default): INSERT INTO "public"."meetings" ("id","requestor_id","requestee_id","lang_one_id","lang_two_id","meeting_time","accepted","status","requestor_score","requestee_score") VALUES (DEFAULT,NaN,NaN,NaN,NaN,'2018-08-06 21:11:21.000 +00:00',false,'Active',0,0) RETURNING *;
2018-08-06T21:11:21.849573+00:00 app[web.1]: POST /api/meetings/createMeeting?requestor_id=32&requestee_id=1&meeting_time=2018-08-16%2013:00:00&location=NYC&location_address=NYC&lang_one_id=1&lang_two_id=2 500 51.120 ms - 1272
like image 412
gwalshington Avatar asked Jul 23 '26 08:07

gwalshington


1 Answers

Looks to me like:

  const { requestor_id, requestee_id, meeting_time, accepted, location, location_address, status, lang_one_id, lang_two_id } = req.body;

Should be:

  const { requestor_id, requestee_id, meeting_time, accepted, location, location_address, status, lang_one_id, lang_two_id } = req.params;

Or wherever the query parameters are from your request object. Given that you are invoking your post request with query params rather than a payload in the request body.

like image 76
AHB Avatar answered Jul 24 '26 21:07

AHB



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!