Удалить запрос с помощью параметров MongoDB NodeJS - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь отправить запрос на удаление из Angular 4 в mongoDb

У меня есть массив идентификаторов, которые я хочу удалить, и в моем сервисе у меня есть функция

  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);
    });
  }

И после этого я пытаюсь удалить объекты,какие идентификаторы такие же, как в запросе

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 пуст {} Также в консоли в разделе Network я вижу 2 запроса OPTIONS (с кодом состояния 204Нет содержимого) УДАЛИТЬ без какой-либо информации

Не могли бы вы дать мне подсказку и помочь решить эту проблему?

1 Ответ

0 голосов
/ 31 мая 2018

Причина, по которой вы видите запрос OPTIONS с ответом 204 НЕТ КОНТЕНТА, связана с Распределением ресурсов между источниками (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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...