Возвращаемое значение всегда одинаково в useEffect

#node.js #reactjs #use-effect

#node.js #reactjs #использование-эффект

Вопрос:

Я протестировал свой серверный API с postman, и он работает нормально, как и должно быть. Но когда я отправляю запрос из react js, он всегда возвращает 0. Мое ожидаемое возвращаемое значение должно быть 1, поскольку эта строка уже существует в таблице. Я почти уверен, что мой серверный код в порядке, и серверный код просто отлично работает от postman. Что не так в моем коде React js? Заранее спасибо. Приветствия.

Интерфейс реагирует на js-код ниже:

 const [like, setLike] = useState(0)
useEffect(() => {
        const userObject = {
            from_user_id,
            to_user_id
        }
        likeDisplayService.unlikeDisplay(userObject)
        .then(res => {
            console.log("This is like return value "  res.value);
            setLike(res.value)
        })
        .catch(e => {
            console.log(("Error: couldn't get like info"))
        })
    }, [])
 

Код js серверного узла приведен ниже:

 const likesDisplayRouter = require('express').Router()
const db = require('../utils/db')

likesDisplayRouter.get('/', (req, resp) => {
    db.query('SELECT * FROM likes WHERE from_user_id = $1 AND to_user_id = $2',
    [req.body.from_user_id, req.body.to_user_id], (err, res) => {
        if (res amp;amp; res.rows[0])
            resp.status(200).send({ value: 1 })
        else if (res)
            resp.status(200).send({ value: 0 })
        else
            resp.status(400).send({ value: "Query execution failed"});
    }
    )
})

module.exports = likesDisplayRouter
 

Ответ №1:

Я думаю from_user_id , или to_user_id у вас недопустимое значение, вы могли бы сделать что-то вроде:

 const [like, setLike] = useState(0)
useEffect(() => {
        //Check if has a valid value
        if (!from_user_id || !to_user_id) return

        const userObject = {
            from_user_id,
            to_user_id
        }
        likeDisplayService.unlikeDisplay(userObject)
        .then(res => {
            console.log("This is like return value "  res.value);
            setLike(res.value)
        })
        .catch(e => {
            console.log(("Error: couldn't get like info"))
        })

      //On changes in this variables call it again
    }, [from_user_id, to_user_id])