#reactjs #react-redux #react-hooks
#reactjs #react-redux #реагирующие хуки
Вопрос:
Я новичок в react-redux и hooks. Я создаю это простое приложение для управления сотрудниками CRUD, и я пытаюсь обновить сотрудника, но, похоже, у меня не получается заставить его работать. вот мой код..
const EditEmployee = ({history, match}) => {
const empById = match.params.id
const dispatch = useDispatch()
const emp = useSelector((state) => state.employee)
const {loading, employee} = emp
const [full_name, setFull_name] = useState('');
const [email, setEmail] = useState('');
const [phone_number, setPhone_number] = useState('');
const [address, setAddress] = useState('');
useEffect(() => {
dispatch(getSingleEmployee(empById))
}, [dispatch, empById])
useEffect(() => {
if (employee != null) {
setFull_name(employee.full_name)
setEmail(employee.email)
setPhone_number(employee.phone_number)
setAddress(employee.address)
}
}, [employee])
const onSubmit = (e) => {
e.preventDefault()
const updateEmp = {
empById,
full_name,
email,
phone_number,
address
}
dispatch(updateEmployees(updateEmp))
history.push('/home')
}
Тогда это выдает мне эту ошибку
SequelizeDatabaseError: invalid input syntax for type bigint: "[object Object]"
Может кто-нибудь, пожалуйста, помочь.
А вот и бэкэнд..
Модель:
import Sequelize from "sequelize"
import db from "../config/database.js";
const Employee = db.define('employee', {
full_name: {
type: Sequelize.STRING
},
email: {
type: Sequelize.STRING
},
phone_number: {
type: Sequelize.STRING
},
address: {
type: Sequelize.STRING
},
})
export default Employee
Контроллер:
const updateEmployee = (req, res) => {
const id = req.params.id;
const updates = req.body
Employee.findOne({
where: { id: id }
})
.then(employee => {
if (employee) {
return employee.update(updates)
} else {
res.status(404).json({message: 'Employee not found'})
throw new Error('Employee not found')
}
})
.then(updatedEmployee => {
res.status(201).json(updatedEmployee);
});
}
Я думаю, что я все сделал правильно, в postman все, кажется, работает
Комментарии:
1. можете ли вы сделать
console.log(updateEmp)
? похоже, что вы передаете объект вместо целого числа где-то в вашемupdateEmp
объекте2. Да, в console.log() он обновляется, но не на экране, и это все еще дает мне это
SequelizeDatabaseError
3. нам нужно увидеть серверную часть, где вы выполняете обновление, потому что похоже, что вы где-то передаете объект вместо числа, возможно, порядок аргументов неправильный..
4. Хорошо, я опубликую это, это опубликовано выше
5. Серверная часть опубликована