Сегодня началось самое странное. В остальном работающий вызов API с использованием Mongoose/Node внезапно перестал возвращать результаты. Я также протестировал вызов в Insomnia, данных нет, но и ошибок нет. Как я уже говорил, раньше это работало... вот блоки Node и React:
Node.js:
router.route('/top/:category').get((req, res) => {
Whiskey.find({ category: req.params.category }).sort({ rated: -1 }).limit(3)
.then(whiskies => res.json(whiskies))
.catch(err => res.status(400).json('Error: ' + err));
});
React Hook называет это:
useEffect(() => {
console.log(`http://localhost:5000/whiskies/top/${capitalize(category)}`)
axios.get(`http://localhost:5000/whiskies/top/${capitalize(category)}`)
.then(res => {
if (res.data.length > 0) {
setWhiskies(res.data)
console.log(res.data)
} else {
console.log("No items")
}
})
}, [])
Кое-что, что я обнаружил при попытке отладки: если вы удалите фильтр из .find()
, вызов API будет работать. Я также ничего не изменил во внешнем интерфейсе относительно звонка.
1 ответ
Я думаю, что проблема в этой строке ${capitalize(category)}
.
Вы пишете название категории в URL-адресе и отправляете его в API-интерфейс узла.
Пожалуйста, либо отправьте category
как есть, либо сделайте его строчным в бэкенде, прежде чем отправлять его в запрос.
Используйте следующее.
let categoryName = req.params.category;
Whiskey.find({ category: categoryName.toLowerCase() }).sort({ rated: -1 }).limit(3)
Надеюсь, это сработает. Спасибо
Похожие вопросы
Новые вопросы
node.js
Node.js — это основанная на событиях, неблокирующая, асинхронная среда выполнения ввода-вывода, использующая движок Google V8 JavaScript и библиотеку libuv. Он используется для разработки приложений, которые интенсивно используют возможность запуска JavaScript как на стороне клиента, так и на стороне сервера и, следовательно, выигрывают от возможности повторного использования кода и отсутствия переключения контекста.