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

时间:2018-08-30 05:21:24

标签: node.js rest api express

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

这是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', ...

中提供

2 个答案:

答案 0 :(得分:0)

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

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

output I received

更新

http.delete在浏览器中不起作用,当您从浏览器访问URL时,它作为获取请求。

如果您使用邮递员,则工作正常,

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 :(得分:-1)

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