У меня есть эта простая функция в моем контроллере:
newUserRequest: async (req, res) => {
const newRequest = new Request(req.body)
const thesi = await Thesi.findById(req.params.thesiId)
const user = await User.findById(req.params.userId)
newRequest.user = user
newRequest.thesi = thesi
await newRequest.save()
user.requests.push(newRequest)
thesi.requests.push(newRequest)
await user.save()
await thesi.save()
res.status(201).json(user)
}
И я вызываю это через мой сервис в моем компоненте следующим образом:
this._usersService.addRequest(this.user, this.addRequestData, thesi).subscribe(
res => { ... })
, и моя сервисная функция вот эта:
addRequest(user, request, thesi){
const id = typeof user === 'string' ? user : user._id;
const id2 = typeof thesi === 'string' ? thesi : thesi._id;
const url = `${this._users}/${id}/${id2}/requests`;
return this.http.post<any>(url, request)
}
Дело в том:
Когда я вызываю addRequest, в mlab запрос идет, как и ожидалось, НО в сети запрос находится в ожидании примерно 2 минуты, а затем отправляетсообщение снова mlab и делает двойной addRequest ..
Итак, простыми словами, я вызываю функцию addRequest, она работает нормально, но через 2 минуты она войдет внутрь блока подписки и автоматически отправит еще один запроссервер.
Это полное предупреждение mongoose msg:
(узел: 12555) UnhandledPromiseRejectionWarning: RangeError: Максимальный размер стека вызовов, превышенный при RegExp.test ()
...............
(узел: 12555) UnhandledPromiseRejectionWarning: необработанное отклонение обещания.Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().(код отклонения: 2)