我的控制器具有此简单功能:
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)
答案 0 :(得分:0)
好..所以问题出在这里:
newRequest.user = user
newRequest.thesi = thesi
我不知道原因,但是当我删除这两行时,它工作正常。
如果有人知道为什么可以随意分享:)