фильтр GET-запроса с параметрами - PullRequest
0 голосов
/ 16 июня 2020

Я хочу отфильтровать Todo.find по имени пользователя из запроса ax ios .get. Проблема в том, что он ничего не возвращает. Есть предложения?

componentDidMount() {
    axios
        .get("http://localhost:8080/${username}",{
            // username : this.state.username
        })
        .then((res) => {
            this.setState({todos: res.data})
            console.log('--------res.data', res.data);
            this.setPageCount()
        })
        .catch((err) => {
            console.log("err", err);
        });
}

app.get('/', (req, res) => {
console.log('Welcome to roffys server')
Todo.find({username:req.params.username})
    .exec((err, todo) => {
        if (err) {
            console.log('Error retrieving todos')
        } else {
            console.log(req.body.username)
            res.json(todo)
        }
    })
})

Также я хочу отправить параметры из другого компонента и я не знаю, как

Это функция, которая изменяет имя пользователя, она находится в другом компоненте:

 handleLogIn = () => {
        const { username, password } = this.state
        if (password.length === 0 || username.length === 0 ) {
            alert('Incorrect Login!')
        } else {
            axios
                .post(`http://localhost:8080/logIn`, {
                    username: username,
                    password: password,
                })
                .then((res) => {
                    this.setState({username: username,password: password})
                    localStorage.setItem('username',this.state.username)
                    this.props.history.push("/todoapp");
                    window.location.reload(false)
                    console.log(this.state.username)
                    console.log('res',res)
                })
                .catch((err) => {
                    console.log("err", err);
                });
        }
    }

BackEnd Side:

app.get('/:username', (req, res) => {
console.log('Welcome to roffys server')
Todo.find({'username': req.params.username})
    .exec((err, todo) => {
        if (err) {
            console.log('Error retrieving todos')
        } else {
            res.json(todo)
        }
    })

})

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

должно быть:

`http://localhost:8080/${username}`

не "http://localhost:8080/${username}"

0 голосов
/ 16 июня 2020

Вы неправильно используете литерал шаблона, он должен выглядеть следующим образом:

.get(`http://localhost:8080/${username}`)

и не следует ли вам принять параметр c Dynami? вот так:

app.get('/:username', (req, res) => { // ...

Обновление:

Что касается передачи имени пользователя в другой компонент, вы можете сделать это:

this.props.history.push({
  pathname: '/todoapp',
  state: { username: this.state.username }
}) 

и в компоненте задачи:

componentDidMount() {
    axios
        .get(`http://localhost:8080/${this.props.location.state.username}`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...