hego64
hego64

Reputation: 365

How to pass variable to get request

I've got this function that calls a get request:

confirmUser(username: string) {
this.http.get<{ users: User[] }>('http://localhost:3000/users').subscribe(
  // success function
(response) => {
  this.user = response.users;
  console.log(this.user);
  }
),
  (error: any) => {
    console.log(error);
  } 
 }

How can I make it so that the username being passed in in the above function be available to replace the username Grok here:

router.get('/', (req, res, next) => {
// User.find().then(users => {
    User.findOne({username: "Grok"}, {} ).then(users => {
    res.status(200).json({
        users: users
    });
})
.catch(error => {
    returnError(res, error);
});
});

The value of username is coming from a form field, so the component calling this is not subscribed to any URL parameters, if that makes a difference.

Upvotes: 0

Views: 646

Answers (1)

Segev -CJ- Shmueli
Segev -CJ- Shmueli

Reputation: 1621

if you pass it as a parameter you should use req.params, otherwise req.query for querystring.

using param (i.e.: http://localhost:3000/users/grok):

router.get('/:username', (req, res, next) => {
// User.find().then(users => {
    User.findOne({username: req.params.username }, {} ).then(users => {
    res.status(200).json({
        users: users
    });
})
.catch(error => {
    returnError(res, error);
});
});

using querystring (i.e.: http://localhost:3000/users?username=grok) :

router.get('/', (req, res, next) => {
// User.find().then(users => {
    User.findOne({username: req.query.username }, {} ).then(users => {
    res.status(200).json({
        users: users
    });
})
.catch(error => {
    returnError(res, error);
});
});

Upvotes: 1

Related Questions