У меня есть приложение для реагирования, которое просто извлекает данные из api. Вместо api я решил использовать mongodb и вместо этого создал простой db с Express в качестве инструмента для сервера.
Если я буду использовать только экспресс, я могу просто сделать две вещи: 1. создать маршрут, на котором я могу отображать все данные 2. Создайте страницу ejs, где я могу показать все данные.
app.get('/cats', function(req, res){
cat.find({}, function(err, allCats){
if (err){
console.info(err);
} else {
res.render('cats', {cats: allCats});
}
})
});
А затем из файла EJS:
<% cats.forEach(cat => { %>
<h4><%= cat.title %></h4>
<h5><%= cat.breed %></h5>
<% }); %>
Теперь вместо того, чтобы бросать эти данные в файл / представления ejs, мне нужно передать данные моему приложению для реагирования, чтобы оно могло обработать рендеринг за меня:
class App extends Component{
constructor(props){
super(props);
this.state = {
cats: [],
};
this.catSearch('meow');
}
catSearch(term){
getCats(term, API_KEY, (cats) => {
this.setState({
cats: cats,
});
});
}
render(){
const catSearch = _.debounce((term) => { this.catSearch(term) }, 300);
return (
<div>
<SearchBar onSearchTermChange = {catSearch}/>
<CatList cats = { this.state.cats }/>
</div>
);
}
};
Примечание: здесь я использовал вспомогательную функцию для получения данных api, но здесь это не так, поскольку мне не нужно извлекать данные из api, а вместо этого мне нужно извлекать данные из базы данных mongodb.
Любая идея, как я могу передать данные из express в мой файл реакции, чтобы он мог обрабатывать рендеринг?
Нужно ли мне включать некоторые файлы в мой файл реакции, чтобы я мог запрашивать базу данных? Заранее спасибо. Некоторое время думал об этом, но не повезло.
Я планирую использовать полный стек MERN.
с mern вы можете вызвать. Плохо визуализировать страницу с данными





В MERN запросы React отправляются на экспресс-сервер, который запрашивает в базе данных необходимые данные. Затем данные извлекаются экспрессом и возвращаются в веб-приложение React.
Создайте экспресс-сервер, который будет получать имена всех кошек из MongoDB и возвращать их в веб-приложение ReactJS. Вы можете использовать Мангуста для получения данных из MongoDB.
У вас должен быть метод componentDidMount() внутри класса и поместить в него вызов api, чтобы получить имена. Затем вам нужно обновить состояние (setState) с помощью ответа, полученного от api.
я сделал это: componentDidMount() { console.info('i got here..') fetch('/cats') .then(response => response.json()) .then(data => this.setState({ cats: data })); }
Но в итоге не вышло. и вылезла ошибка Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
Это какая-то ошибка с JSON, попробуйте componentDidMount() { console.info('i got here..') fetch('/cats') .then(response => console.info(response)) и проверьте, получаете ли вы ответ
можно вместо console.info(response) сделать console.info(response.body)? Это может быть тот ответ, который вам нужен
какая-то конкретная причина, по которой вы не хотите пробовать вызов API?