findOneAndUpdate mongoose; Невозможно установить заголовки после их отправки клиенту - PullRequest
0 голосов
/ 19 мая 2019

После создания записи я пытаюсь использовать $ push для отправки идентификатора только что созданной записи в другую модель.

likeRoutes.route('/add').post(function(req, res){
    let like = new Like({
        value: req.body.value,
        _report: req.body._report
    })
    like.save((err, doc) => {
        if (err)
            res.send(err)
            console.log('in router - card id', req.body._report)
            console.log('doc id', doc)
        Report.findOneAndUpdate({ _id: req.body._report },
            { $push: { like: doc._id } },
            { new: true , useFindAndModify: false },
            (err, post) => {
                if (err)
                    res.send(err)
                    res.json({doc})
            }
        )
    })
})

Когда я запускаю это, я продолжаю получатьошибка Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

Ранее я настраивал ее следующим образом:

Report.findOneAndUpdate({ _id: req.body._report },

И каждый раз он добавлял похожую запись в один и тот же отчет и не просматривал по идентификатору.

1 Ответ

0 голосов
/ 19 мая 2019

Вы не можете вызывать res.send и res.json один за другим.

Попробуйте это:

likeRoutes.route('/add').post(function(req, res){
    let like = new Like({
        value: req.body.value,
        _report: req.body._report
    })
    like.save((err, doc) => {
        if (err) return res.send(err)

        console.log('in router - card id', req.body._report);
        console.log('doc id', doc);

        Report.findOneAndUpdate({ _id: req.body._report },
            { $push: { like: doc._id } },
            { new: true , useFindAndModify: false },
            (err, post) => {
                if (err) return res.send(err);

                res.json({doc})
            }
        )
    })
})

Теперь в случае ошибки вы прекращаете выполнение и возвращаетеОшибка.Если нет ошибки - вы отправляете результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...