簡體   English   中英

使用參數MongoDB NodeJS刪除請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM