[英]Delete Request with params MongoDB NodeJS
我嘗試將刪除請求從Angular 4發送到mongoDb
我有一個ID數組,我想刪除它,在我的服務中我有一個函數
deleteData(id) {
return this.http.delete( this.api, id)
}
然后在我的組件中構建一個對象數組(因為我需要將其作為JSON傳遞給后端-作為數組,可能無法識別它)
deleteData(data) {
const dataToSend = [];
let oneDataToSend;
for (let i = 0; i < data.length; i++) {
oneDataToSend = {'_id': ''};
oneDataToSend._id = data[i];
dataToSend.push(oneDataToSend);
}
this.service.deleteData(dataToSend).subscribe((res) => {
console.log(data);
});
}
然后,我嘗試刪除對象,這些ID與查詢中的ID相同
app.delete('/tasks', function(req,res){
console.log(req.body);
var ids = [];
for (let i = 0; i < req.body.length; i ++) {
ids.push(req.body[i]._id);
}
var myquery = { _id: { $in: ids } };
Model.collection.deleteMany(myquery, function(err, obj) {
if (err) throw err;
});
});
在這里,我遇到了一個問題,即req.body為空{}此外,在網絡部分的控制台中,我看到2個請求選項(狀態代碼為204,無內容),刪除時沒有任何信息
您能給我一個提示並幫助解決這個問題嗎?
您看到帶有204 NO CONTENT響應的OPTIONS請求的原因是由於跨源資源共享 (CORS)。 客戶端正在檢查是否允許向您的后端發出DELETE請求。
考慮在后端應用程序中允許CORS。 為了方便表達,請使用expressjs / cors 。 但是,請確保您了解允許跨站點請求的安全隱患。
另外,您是否在解析請求正文? 如果沒有,它將在req.body中未定義。
您可以使用express.json() ,它將嘗試解析請求正文的JSON並將其保存到req.body,但前提是必須將標題“ Content-Type:application / json”與請求一起發送:
const app = express();
app.use(express.json()); // Parses request body if type is json. Saves to req.body.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.