#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])