NodeJS实战 利用Express&MongoDB搭建博客(6)文章分类编辑

116 阅读1分钟

分类编辑

    /views/admin/category_index.html

{% extends 'layout.html' %}
{% block main %}
<ol class="breadcrumb">
    <li><a href="/">管理首页</a></li>
    <li><span>分类列表</span></li>
</ol>
<h3>分类列表</h3>

<table class="table table-hover table-striped">
    <tr>
        <th>ID</th>
        <th>分类名称</th>
        <th>操作</th>
    </tr>
    {% for category in categories %}
    <tr>
        <td>{{category._id.toString()}}</td>
        <td>{{category.name}}</td>
        <td>
            <a href="/admin/category/edit?id={{category._id.toString()}}">修改</a>
            <a href="/admin/category/delete?id={{category._id.toString()}}">删除</a>
        </td>
    </tr>
    {% endfor %}
</table>
{%include 'page.html'%}
{% endblock %}

    分类修改

    /views/admin/category_edit.html

{% extends 'layout.html' %}
{% block main %}
<ol class="breadcrumb">
    <li><a href="/">管理首页</a></li>
    <li><span>分类编辑</span></li>
</ol>
<h3>分类编辑-{{category.name}}</h3>
<form role="form" method="post">
    <div class="form-group">
        <label for="name">分类名称:</label>
        <input type="text" value="{{category.name}}" class="form-control" id="name" placeholder="请输入分类名称" name="name">
    </div>
    <button type="submit" class="btn btn-default">提交</button>
</form>
{% endblock %}

     /routers/admin.js

/**
 *分类修改
 */
router.get('/category/edit',function (req,res) {
   //获取要修改分类的信息,并以表单展示
    var id = req.query.id || '';
    //获取要修改的分类信息
    Category.findOne({
        _id:id
    }).then(function (category) {
        if(!category){
            res.render('admin/error',{
                userInfo:req.userInfo,
                message:'分类信息不存在'
            });
        }else {
            res.render('admin/category_edit',{
                userInfo:req.userInfo,
                category:category
            });
        }
    })
});
/**
 * 分类修改保存
 */
router.post('/category/edit',function (req,res) {
    var id = req.query.id || '';
    //获取post提交过来的名称
    var name = req.body.name || '';
    //获取要修改的分类信息
    Category.findOne({
        _id:id
    }).then(function (category) {
        if(!category){
            res.render('admin/error',{
                userInfo:req.userInfo,
                message:'分类信息不存在'
            });
            return Promise.reject();
        }else {
            //当用户未做任何修改时
            if(name==category.name){
                res.render('admin/success',{
                    userInfo:req.userInfo,
                    message:'修改成功',
                    url:'/admin/category'
                });
                return Promise.reject();
            }else{
                //要修改的分类是否已存在
                Category.findOne({
                    _id:{$ne: id},
                    name:name
                });

            }
        }
    }).then(function (sameCategory) {
        if(sameCategory){
            res.render('admin/error',{
                userInfo:req.userInfo,
                message:'数据库中已经存在同名分类'
            });
            return Promise.reject();
        }else {
            return Category.update({
                _id:id
            },{
                name:name
            });
        }
    }).then(function () {
        res.render('admin/success',{
            userInfo:req.userInfo,
            message:'修改成功',
            url:'/admin/category'
        });
    })
});

    分类删除

    /routers/admin.js

/**
 * 分类删除
 */
router.get('/category/delete',function (req,res) {
    //获取要删除的分类id
    var id = req.query.id || '';
    Category.remove({
        _id:id
    }).then(function () {
        res.render('admin/success',{
            userInfo:req.userInfo,
            message:'删除成功',
            url:'/admin/category'
        });
    })
});