我遇到了如何从节点中的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);
});
答案 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');