从节点中的json文件中删除

时间:2015-09-16 13:22:16

标签: javascript node.js express

我遇到了如何从节点中的json文件中删除元素。

我在我的json文件中显示了我所做的所有元素

var json = require('./test.json');

  app.get('/courses', function(req, res) {
    res.render('courses', {
        title: "Hello",
        name: "Fredrik",
        js: json
    });
});

以下是我的test.json文件

[
{
"id":1,"courseId":"DT162G","courseName":"Javascript-baserad webbutveckling","coursePeriod":1
},
{
"id":2,"courseId":"IK060G","courseName":"Projektledning","coursePeriod":1
},
{
"id":3,"courseId":"DT071G","courseName":"Programmering i C#.NET","coursePeriod":2
}
]

现在我希望能够删除我在视图中循环的singel元素

到目前为止,我做到了这一点,但我陷入困境。在我看来,这条道路应该如何?

 <td><a href="/courses/:id">Delete</a></td>

app.delete('/courses/:id', function(req, res) {
  if(json.length <= req.params.id) {
    res.statusCode = 404;
    return res.send('Error 404: No quote found');
  }

  json.splice(req.params.id, 1);

});

3 个答案:

答案 0 :(得分:2)

我希望这会有所帮助

var fs = require('fs');

app.delete('/courses/:id', function(req, res) {
var indexOfCouseInJson = json.map(function(item) { return item.id; }).indexOf(req.params.id); //find the index of :id
  if(indexOfCouseInJson === -1) {
    res.statusCode = 404;
    return res.send('Error 404: No quote found');
  }

  var result = json.splice(indexOfCouseInJson,1);
  fs.writeFile(jsonFilePath, JSON.stringify(result), function(err){
   if(err) throw err;
   res.json(true);
 });

});

答案 1 :(得分:0)

为什么内置动态数据的json FILE?你应该使用数据库(例如mongodb使用json),或者你必须以另一种方式存储它。

但是如果您仍然希望将数据保存在文件中,那么您所做的是正确的,但是在您删除了所需的元素之后,您必须再次保存该文件。

答案 2 :(得分:0)

要添加ram的答案,您可以使用readJsonSync方法作为 var YourFile = Fs.readJsonSync('file.json');现在delete YourFile.element;将您的元素重置为YourFile.id = 23;,最后执行Fs.writeJsonSync('file.json');