API Node rest: отложенный запрос не обновляет данные запроса - PullRequest
1 голос
/ 19 октября 2019

Попытка обновить данные с помощью запроса PUT. Но данные не обновляются и не возвращают предыдущие данные в почтальоне.

Почтальон положил запрос:

http://localhost:3000/api/actors/5daa8f1c5845ad0b5826b8d9?name=Tom

Ответ почтальона:

{
    "createdAt": "2019-10-19T04:16:13.317Z",
    "updatedAt": "2019-10-19T04:16:13.317Z",
    "_id": "5daa8f1c5845ad0b5826b8d9",
    "name": "scarlett johansson",
    "birthday": "1980-10-14T00:00:00.000Z",
    "country": "usa",
    "__v": 0
}

Я также пыталсяиспользовать findByIdAndUpdate. Не получил результат. Любая помощь будет оценена.

Контроллер:

exports.updateActor = async(req, res, next) => {
    try {
        const actorId = req.params.actorId;
        const data    = req.body;

        const updateActor = await Actor.findById(actorId);

        updateActor.set(data);

        const actor = await updateActor.save();

        // res.status(200).json({ message: "Data has Updated Successfully!" });
        res.send(actor);

    } catch (err) {
        res.status(500).json({ message: err.message });
    }
};

Маршрутизатор:

router.put('/actors/:actorId', Actor.updateActor);

Ответы [ 4 ]

2 голосов
/ 19 октября 2019

Ваш запрос почтальона http://localhost:3000/api/actors/5daa8f1c5845ad0b5826b8d9?name=Tom, поэтому похоже, что данные для обновления будут в req.query вместо req.body.

Примечание : Вы должны поместить данные для обновленияв теле вместо запроса, как вы делаете.

Подробнее здесь .

1 голос
/ 19 октября 2019

Чтобы устранить ошибку ObjectId, используйте следующий код.

var mongoose = require('mongoose');
const updateActor = await Actor.findOneAndUpdate({"_id":mongoose.Types.ObjectId(actorId)},data, { new: true });
res.send(updateActor);
1 голос
/ 19 октября 2019
Please use following code for getting update data 

 Actor.findOneAndUpdate({"_id":ObjectId(actorId)},data, 
 { new: true}).then((updatedData) => {
 res.send(updatedData);
 });
0 голосов
/ 19 октября 2019
exports.updateActor = async(req, res, next) => {
    try {
        const actorId = req.params.actorId;
        const data    = req.body;

        const updateActor = await Actor.update({"_id":actorId},data);


        // res.status(200).json({ message: "Data has Updated Successfully!" });
        res.send(updateActor);

    } catch (err) {
        res.status(500).json({ message: err.message });
    }
};


try thiss...
...