node+express+mongoDB搭建个人博客 (五)

时间:2022-10-23 02:39:58

搭建个人博客 ( YIDBlog )

上一篇文章中我们已经完成了文章的发表,接下来我们来实现对文章的编辑和删除。

1.对文章的编辑,修改detail.ejs,代码如下:

<%- include header %>
<p> <span><a class="edit" href="/edit/<%= post.author %>/<%= post.title %>?id=<%=post._id%>">编辑</a></span> <span><a class="edit" href="/delete?id=<%= post._id%>">删除</a></span> </p> <p><h2><a href="#"><%= post.title %></a></h2></p> <p class="info"> 作者:<a href="#"><%= post.author %></a> | 日期:<%= post.publishTime %> | 浏览:<%= post.pv%> </p> <p><%- post.article %></p> <%if(post.postImg) { %> <img src="/images/<%= post.postImg%>" alt="" style="width:100%;height:100%;"> <% } %> <%- include footer %>

2.创建edit.ejs文件,代码如下:

<%- include header %>

<form method="post"> <div class="form-group"> <label for="name">标题:</label> <input type="text" class="form-control" name="title" value="<%= post.title %>" /> </div> <div class="form-group"> <label for="name">文章</label> <textarea class="form-control" name="article" rows="8"><%= post.article %></textarea> </div> <hr /> <input type="hidden" value="<%= post._id%>" name="id" /> <input type="submit" value="保存修改" class="btn btn-default"/> </form> <%- include footer %>

3.接着修改index.js,代码如下:

 //编辑文件
    app.get('/edit/:author/:title',checkLogin, function (req, res) {
        var id = req.query.id;
        Post.findById(id, function (err, data) {
            //console.log(data);
            if (err) {
                req.flash('error', err);
                return res.redirect('back');
            }
            res.render('edit', {
                title: '编辑',
                post: data,
                user: req.session.user,
                success: req.flash('success').toString(),
                error: req.flash('error').toString()
            });
        });
    });
     app.post("/edit/:author/:title",checkLogin,function(req,res,next){
        var post = {
            id:req.body.id,
            author:req.session.user,
            title:req.body.title,
            article:req.body.article
        };

        console.log(post);

        //markdow转格式文章
        post.article = markdown.toHTML(post.article);


        Post.update({"_id":post.id},{$set:{title:post.title,article:post.article}},function(err){
            if(err){
                console.log(err);
                return;
            }
            console.log("更新成功");
            res.redirect("/");
        });
    });

node+express+mongoDB搭建个人博客 (五)

node+express+mongoDB搭建个人博客 (五)

node+express+mongoDB搭建个人博客 (五)

node+express+mongoDB搭建个人博客 (五)

4.接着是删除功能,修改index.js,代码如下:

    //删除文件
    app.get('/delete',checkLogin,function(req,res){
        var id = req.query.id;
        console.log(id);
        if(id && id!=''){
            Post.findByIdAndRemove(id,function(err){
                if(err){
                    console.log(err);
                    req.flash("success","删除文章失败");
                    return req.redirect('/')
                }
                req.flash("success","删除文章成功");
                res.redirect('/');
            })
        }
    });

就这样一句代码就完成了删除功能了。