我尝试将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无内容) 删除没有任何信息
您能否给我一个提示并帮助解决这个问题?
答案 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.