无法使用节点js中的app.delete删除数据

问题描述 投票:1回答:2

我试图从users.json文件中删除用户,该文件与调用API的app.js位于同一目录中,但每次运行代码时,都显示错误:“无法获取/删除”,在浏览器。我寻找解决方案,但没有找到任何解决方案。任何帮助将不胜感激。

这是users.json文件。 { "user1" : { "name" : "mahesh", "password" : "password1", "profession" : "teacher", "id": 1 }, "user2" : { "name" : "suresh", "password" : "password2", "profession" : "librarian", "id": 2 }, "user3" : { "name" : "ramesh", "password" : "password3", "profession" : "clerk", "id": 3 } }

//app.js file   
var express = require ('express');
var app = express();
var bodyParser = require('body-parser');
var multer = require('multer');
var fs = require("fs");
var PORT = 3000;

var id = 2;
//here is the delete api 
app.delete('/delete',(req,res) => {
fs.readFile(__dirname + "/" + "users.json", 'utf8', (err,data) => {
     data = JSON.parse( data );
   delete data["user" + 2];

   console.log( data );
   res.end( JSON.stringify(data));

});
})

var server = app.listen(PORT,function(){
console.log('server started at port ' + PORT);
});

除此之外我怎么能从id动态地给出用户的url。我试过req.params.id,我不确定我在写它。 delete data["user" + req.params.id];这个id将在网址app.delete('/delete/:id', ...中提供

node.js rest api express
2个回答
0
投票

使用app.get时,您的代码工作正常。

你只需要使用app.get而不是app.delete

output I received

更新

http.delete不能在浏览器中工作,当你从浏览器访问url时它会作为get请求。

如果你使用邮递员它工作正常,

Http.delete demo

检查示例代码。

app.delete('/delete/:id', function(req, res) {
 var id = req.params.id ;
fs.readFile("./users.json", 'utf8', (err,data) => {
     data = JSON.parse( data );

delete data["user" + id];

console.log( JSON.stringify(data) );
res.status(200);

return res.send("Removed");
});
})

-1
投票

您的代码适用于邮递员的API调用。但是,如果您直接尝试使用浏览器URL,那么这是一个GET调用(您可以在日志记录中观察它)。要删除,您需要使用URL路径和回调修改GET调用。希望我能理解这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.