猫鼬:UnhandledPromiseRejection警告:RangeError:超出了最大调用堆栈大小

时间:2018-12-19 18:09:26

标签: angular mongoose promise angular-promise

我的控制器具有此简单功能:

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分钟后它将进入订阅块,并将自动向服务器发送另一个请求。

这是完整的警告猫鼬味精:

  

(节点:12555)UnhandledPromiseRejectionWarning:RangeError:最大值   超出呼叫堆栈大小       在RegExp.test()

     

......

     

(节点:12555)UnhandledPromiseRejection警告:未处理的承诺   拒绝。该错误是由抛出异步内部引起的   功能没有捕获块,或者通过拒绝不是   用.catch()处理。 (拒绝ID:2)

1 个答案:

答案 0 :(得分:0)

好..所以问题出在这里:

newRequest.user = user
newRequest.thesi = thesi

我不知道原因,但是当我删除这两行时,它工作正常。

如果有人知道为什么可以随意分享:)