![](/img/trans.png)
[英]jest.advanceTimersByTime doesn't work when I try to test my retry util function
[英]A function works when I test it with Postman, but doesn't work from my client
我的客戶端中有一個按鈕,需要根據 ID 從 MongoDB 集合中刪除文檔。 這是它在后端的樣子:
index.js:
router.post('/deletetask', async function (req, res, next) {
let result = await dbModule.deleteTask(req.body.taskID);
res.json(result);
});
dbModule.js(我創建的)
deleteTask: (taskID) => {
return Task.findByIdAndDelete({_id: taskID});
}
通過 Postman 運行它會返回一個結果,並且確實會從集合中刪除該任務。 我添加了客戶端代碼,如下所示:
這是 HTML:
<button class="btn btn-danger" (click)="deleteTask(task._id)">Delete
<!-- There is an SVG icon here, removed for clarity -->
</button>
對應的 TS 組件:
deleteTask(taskID)
{
this.dbService.deleteTask(taskID).subscribe(data => {
console.log(data);
});
this.router.navigate(['/tracker']); <!-- redirect to simulate a refresh -->
}
服務代碼:
deleteTask(taskID):Observable<any>
{
return this.http.post("http://localhost:3000/deletetask", taskID, httpOptions);
}
當我添加客戶端代碼並嘗試運行 function 時,我不斷收到“POST http://localhost:3000/deletetask 400(錯誤請求)”
我不知道我做錯了什么。 我以為它可能是 CORS 的東西,但我添加了 CORS npm ZEFE90A8E604A7C840E88ZF03DZ 我還有另一個 function 添加任務,對服務器進行 POST 調用,並且工作正常,我所有其他調用也是如此。
有任何想法嗎?
從我的評論擴展。
最好將路由移動到訂閱的next
或complete
回調中。 這樣我們就可以確定 HTTP 請求在路由到其他地方之前完成。
根據您在后端訪問值的方式,您實際上可能需要從客戶端發送 object。 嘗試以下
this.http.post("...", { taskID: taskID }, httpOptions);
這是解決方案:
return this.http.post("http://localhost:3000/deletetask", {taskID}, httpOptions);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.