Я создаю приложение React / Express / MongoDB.Я пытаюсь сделать живой поиск, который возвращает результаты по мере ввода.Вызов БД на сервер работает только пять раз, а затем останавливается.Тогда я не могу обновить браузер, поэтому я думаю, что сервер в этот момент перестает обрабатывать запросы.Блокировал ли я цикл событий узла?
Когда я останавливал сервер, все неотвеченные ответы отображаются в консоли браузера:
POST http://localhost:3000/action/searchTextIndex net::ERR_EMPTY_RESPONSE
POST http://localhost:3000/action/searchTextIndex net::ERR_EMPTY_RESPONSE
POST http://localhost:3000/action/searchTextIndex net::ERR_EMPTY_RESPONSE
Вот мой AJAX-вызов,ПРИМЕЧАНИЕ: это регулируется для вызова с максимальной частотой 800 мс.
search(query, dbCollection) {
axios.post('/action/searchTextIndex', {
dbCollection,
query
})
.then(response => {
console.log(response);
})
.catch(err => console.log(err))
}
А вот и экспресс-код js:
const searchTextIndex = (req, res, db) => {
const { query, collection } = req.body;
db.collection(collection).find(
{ $text: { $search: query } }
)
.project({ score: { $meta: 'textScore' } })
.sort({ score: { $meta: 'textScore' } })
.toArray((err, result) => {
if (err) {
console.log(err);
res.send({ type: 'server_error' });
return;
}
console.log(result);
return;
})
}
Почему он будет работать только пять раз, даже если яподождать несколько секунд, прежде чем нажимать каждый символ в поле поиска?