使用params MongoDB NodeJS删除请求

时间:2018-05-30 22:10:09

标签: javascript node.js angular mongodb express

我尝试将Angular 4的删除请求发送到mongoDb

我有一系列ID,我想删除它,在我的服务中我有一个功能

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

然后在我的组件中我构建了一个对象数组(因为我需要将它作为JSON传递给后端 - 作为一个数组,它可能不会被识别)

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

然后我尝试删除对象,其中ID与查询中的相同

t                    max_type   mean_type   min_type    std_type    sid
 2010-04-17 00:00:00 5.300       4.3372,     3.4000,     null        1      
 2010-04-17 00:00:00 5.3135      null        3.0365      0.3795      2

我遇到了问题,那里有req.body是空的{} 此外,在网络部分的控制台中,我看到2个请求 选项(状态代码204无内容) 删除没有任何信息

您能否给我一个提示并帮助解决这个问题?

1 个答案:

答案 0 :(得分:0)

您看到带有204 NO CONTENT响应的OPTIONS请求的原因是Cross Origin Resource Sharing(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.