Mongoose: UnhandledPromiseRejectionWarning: RangeError: Превышен максимальный размер стека вызовов - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть эта простая функция в моем контроллере:

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)

1 Ответ

0 голосов
/ 19 декабря 2018

Хорошо .. поэтому проблема была здесь:

newRequest.user = user
newRequest.thesi = thesi

Я не знаю причину, но когда я удаляю эти две строки, все работает нормально.

Если кто-то знает, почему не стесняйтесь поделиться:)

...