【发布时间】:2015-03-04 05:34:20
【问题描述】:
您好,我正在使用 express.js 创建一个简单的博客,使用 data.json 文件创建/更新/删除基于 id 的帖子。 每次我这样做时,我都会使用 fs.writeFile 来创建和更新 Markdown 帖子,使用 json 数组中的 slug 数据。 因此,当我创建一个名为 First Post 的帖子时,我会在我的 /path 文件夹中获得一个 first-post.md 文件。 问题:每次我更新文件并使用 fs.writeFile 时,我都会创建一个新文件路径而不删除旧文件路径?
例子:
更新json数组上的名称数据:
第一次发帖 至 第一次发布更新 我得到一个降价文件 first-post-update.md。但旧的 first-post.md 文件仍然存在。
是否可以删除在 data.json 文件中没有到每个 slug 数据的相应链接的目录路径上的每个 markdown 文件?
类似这样的:
function deleteFiles(files, callback){
files.forEach(function(filepath){
//Filter every item.id on data.json and get the slug params.
fs.unlink(filepath, function(err) {
//If any markdown file don´t have a corresponding link to each slug data delete them.
});
}
data.json 示例:
{
"posts": [
{
"name": "First Post",
"desc": "Some description",
"slug": "first-post",
"id": "07cbc3854-7fa7-4451-883c-a9c8c87143ef"
}
]
}
一些创建和更新帖子的示例代码:
exports.save = function (req, res) {
var slugTitle = slug(req.body.name).toLowerCase().split('.').join("");
var description = req.body.desc;
db.add({name:req.body.name, desc:req.body.desc, slug: slugTitle});
fs.writeFile("path/"+slugTitle+".md", description, function(err) {
if(err) {
console.log(err);
} else {
console.log("The new post was created on path/"+slugTitle+".md");
}
});
res.redirect('/post');
};
exports.update = function (req, res) {
var slugTitle = slug(req.body.name).toLowerCase().split('.').join("");
var description = req.body.desc;
db.update({id: req.body.id, name: req.body.name, desc: req.body.desc,slug: slugTitle});
fs.writeFile("path/"+slugTitle+".md", description, function(err) {
if(err) {
console.log(err);
} else {
console.log("The new post was updated on path/"+slugTitle+".md");
}
});
res.redirect('/post');
};
【问题讨论】:
标签: javascript json node.js express