Вызов API с использованием Mon goose .find () с фильтром ничего не возвращает? - PullRequest
0 голосов
/ 07 апреля 2020

Самое странное начало происходить сегодня. В противном случае работающий вызов API с использованием Mongoose / Node неожиданно перестал возвращать результаты. Я также проверил вызов в бессоннице, не возвращает данных, но и ошибок тоже нет. Как я уже говорил, раньше это работало ... вот блоки 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 Ответ

0 голосов
/ 07 апреля 2020

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

Вы вводите название категории в URL и отправляете его на узел api.

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

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

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

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

...