Попытка обновить объект с помощью react-redux

#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. Серверная часть опубликована