首页 > 解决方案 > 如何传递变量以获取请求

问题描述

我有这个调用get请求的函数:

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);
  } 
 }

我怎样才能使上述函数中传入的用户名可用于替换Grok此处的用户名:

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);
});
});

username 的值来自表单字段,因此调用它的组件不会订阅任何 URL 参数,如果这会有所不同的话。

标签: node.jsmongodbexpress

解决方案


如果将其作为参数传递,则应使用req.params,否则req.query用于查询字符串。

使用参数(即:)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);
});
});

使用查询字符串(即: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);
});
});

推荐阅读