Как исправить эту функцию, чтобы получить данные, содержащие ключевые слова поиска? - PullRequest
0 голосов
/ 26 апреля 2019

Я занимаюсь разработкой сайта с использованием технологий стека MERN.В этом приложении я хочу предоставить средство поиска.Рядом с ним есть кнопка поиска текстового поля.Я хочу открыть результаты поиска на новой странице.Например,

Таблица данных содержит продукты.Если какой-то пользователь наберет «молоко» и нажмет на поиске, на новой странице отобразятся все данные о молочном продукте.

когда я нажму на кнопку поиска, он обновит URL браузера до этого,

http://localhost:3000/search_result/this_is_search_string

Это код внешнего интерфейса,

<form className="form-inline">
<input type="text"
  className="form-control"
  value={this.state.name}
  onChange={this.on_change_name}/>
<Link to={'/search_result/'+this.state.name} className="btn btn-primary">Search</Link> 
</form>

Первая проблема - обновление URL-адреса при нажатии кнопки, но оно не перенаправляет на новую страницу.На странице search_result метод componentDidMount () выглядит следующим образом:

componentDidMount(){
        axios.get('http://localhost:4000/item/')
            .then(response => {
                this.setState({ search_result: response.data });
            })
            .catch(function (error) {
                console.log(error);
            })
    }

Я хочу передать добавленное значение url вышеупомянутой функции '2-я строка, axios.get('http://localhost:4000/item/') конец /item/.Таким образом, я могу загрузить извлеченные значения в таблицу.

Также в методе файла бэкэнд-контроллера выглядит так:

export const get_items_by_name=(req,res)=>{
    //Item.find(req.params.id,(err,item)=>{{name: "Renato"}
    Item.find({name: "a"},(err,item)=>{
        if(err){
            res.send(err);
        }
        res.json(item);
    });
};

В SQL есть способ выполнить запрос выбора с помощью LIKE.Но я новичок в стеке MERN.Итак, как я могу обновить описанный выше метод для поиска и получения значений при добавлении URL.

Мне нужна ваша помощь, ребята, как это выяснить.Спасибо за вашу помощь специально с поддержкой реализации.

1 Ответ

1 голос
/ 27 апреля 2019

В вашей проблеме вам нужно поменять контроллер, как это попробуйте,

export const get_items_by_name=(req,res)=>{
    //Item.find(req.params.id,(err,item)=>{{name: "Renato"}
    Item.find({name:`/.*${req.body.name}.*/` },(err,item)=>{
        if(err){
            res.send(err);
        }
        res.json(item);
    });
};

Я проверил это через почтальона, и он работает.Вам нужно найти способ выполнить рендеринг страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...