Сегодня началось самое странное. В остальном работающий вызов 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 будет работать. Я также ничего не изменил во внешнем интерфейсе относительно звонка.

0
Kevin Haube 7 Апр 2020 в 08:37
Пожалуйста, проверьте статус вашей службы MongoDB.
 – 
Akshita Karetiya
7 Апр 2020 в 08:43
Это. Как я уже упоминал, вызов API работает без фильтра.
 – 
Kevin Haube
7 Апр 2020 в 19:26

1 ответ

Я думаю, что проблема в этой строке ${capitalize(category)}.

Вы пишете название категории в URL-адресе и отправляете его в API-интерфейс узла.

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

Используйте следующее.

let categoryName = req.params.category;
Whiskey.find({ category: categoryName.toLowerCase() }).sort({ rated: -1 }).limit(3)

Надеюсь, это сработает. Спасибо

0
Aravind 7 Апр 2020 в 09:05