После почтового запроса.. Ошибка: невозможно установить заголовки после их отправки клиенту

После отправки запроса вылетает ошибка

Ошибка [ERR_HTTP_HEADERS_SENT]: невозможно установить заголовки после их отправки клиенту в ServerResponse.setHeader.

Найдите код ниже:

router.post('/share', (req, res) => {
    const {userArray} = req.body

    userArray.map(userArray => 
    Share.findOne({ username: userArray.username }, (err, user) => {
        if (err) {
            console.log('share in router user.js post error: ', err)
        } 

        else if (user) {
            Share.update({ username: userArray.username}, {$push: { sharedPapers: userArray.sharedPaper  }, status: 1,name:userArray.name},
              function (error, success) {
                    if (error) {
                        res.json(error)
                        // console.log(error);
                    } else {
                        // res.json(user)
                        res.json(user)
                        // console.log("success");
                    }
                });
        }

        else {
            console.log(userArray.username,userArray.sharedPaper)
            const newShare = new Share({
                username: userArray.username,
                sharedPapers: userArray.sharedPaper,
                status:1

            })

            newShare.save((err, shareHistory) => {
                if (err) {return res.json(err)}
                else{res.json(shareHistory)}

            })
        }
    })

)

    })

person ReNinja    schedule 22.03.2019    source источник
comment
У вас есть функции с обратными вызовами внутри .map(), которые фактически завершаются после/во время вашего последнего вызова .save(), где вы также используете ответ res.json(). Кроме того, вы в принципе не можете включать res.json() в цикл. Вы можете позвонить только один раз. См. также bulkWrite() примеров в обновлении поля MongoDB с использованием значения другого поля о том, как вы на самом деле должны выпускать обновления в цикле. И использование findOne() перед каждой операцией в основном избыточно.   -  person Neil Lunn    schedule 22.03.2019
comment
Я могу понять, что зацикливание вызывает эту ошибку... но не могли бы вы объяснить это подробнее.   -  person ReNinja    schedule 22.03.2019