'TypeError: Cannot destructure property id of req.params as it is undefined

I'm trying to get a user profile from a database and return it as a json object when the profile url (localhost:3000/Profile/1) is ran. but i am getting this error: TypeError: Cannot destructure property id of req.params as it is undefined.

here is the code in the express server.

const express = require('express');
const bodyParser = require('body-parser');
const bcrypt = require('bcryptjs');
const cors = require('cors');
const knex = require('knex');

const app = express();
app.use(cors());
app.use(bodyParser.json());


app.get('/Profile/:id', (res,req) =>{
    const {id} = req.params;
    db.select('*').from('user').where({id})
    .then(user => {
    res.json(user[0])})
})

i used postman to send the get request.



Solution 1:[1]

You passing the wrong parameters to the get function

E.g.

// respond with "hello world" when a GET request is made to the homepage
app.get('/', function (req, res) {
  res.send('hello world')
})

In your case

app.get('/Profile/:id', (req, res) =>{
   console.log(req.params)
}

Solution 2:[2]

The order of parameters is Request, Response so you have to do this:

app.get('/profile/:id', (request, response) => {
    const { id } = request.params;
    db.select('*').from('user').where({id}).then(
       user => {
           res.json(user[0])
       });
});

Solution 3:[3]

I see your error man, you put in the function (res, res) and should be (req,res).

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Prathamesh More
Solution 2 JuanDa237
Solution 3 José Salina