美文网首页
nodejs数据的删除

nodejs数据的删除

作者: 王伯卿 | 来源:发表于2018-02-28 22:50 被阅读0次
    页面.png

    现在假设有这么一个页面,要实现的功能如下:
    标题、描述、链接都输入内容,点添加后,下方表单中会出现添加的内容,点击删除,表单中的内容会被删除。(修改功能还没有实现,暂定)
    先做添加的功能:

          <div>
            <form action="?" method="post">
              标题:<input type="text" name="title"><br>
              描述:<textarea name="description"></textarea><br>
              链接:<input type="text" name="href"><br>
              <input type="submit" value="添加">
            </form>
          </div>
    

    这边点击添加后,数据就会被POST当前页面。我们的当前页面是banners页面。
    所以,我们要处理所接收到的POST数据。

    router.post('/banners',function(req,res){
        // 先从req中取得各样的数据
        var title=req.body.title;
        var description=req.body.description;
        var href=req.body.href;
    
        // 如果title、description、href为空,则报错
        if(!title|| !description|| !href){
          res.status(400).send('arg error').end();
        }else{
          // 将前端POST过来的数据插入数据库
          db.query(`INSERT INTO banner_table (title,description,href) VALUE('${title}','${description}','${href}')`,function(err,data){
            if(err){
              console.error(err);
              res.status(500).send('database error').end();
            }else{
              // 重定向到banners页面
              res.redirect('/admin/banners');
            }
          });
        }
      });
    

    经过这步操作之后,数据库确实保存了前端POST过来的数据,然后我们需要将POST来的数据再返回给前端,然后渲染到页面上。
    大家看一下前面这段代码的最后一句:

    res.redirect('/admin/banners');
    

    这边是以get的方式重新访问,admin下面的banners页面,因此,我们需要对这个get请求做处理,这样就可以把数据返回给前端了。

      router.get('/banners',function(req,res){
            db.query('SELECT * FROM banner_table',function(err,banners){
              if(err){
                console.error(err);
                res.status(500).send('database error').end();
              }else{
                // 将banners数据返回给前端,供ejs文件使用
                res.render('admin/banners.ejs',{banners});
              }
            });
      });
    

    然后前端就拿到了数据库的数据,就可以开始渲染了。

    <table border="1" width="100%">
            <thead>
              <tr>
                <th>ID</th>
                <th>title</th>
                <th>description</th>
                <th>href</th>
                <th>操作</th>
              </tr>
            </thead>
            <tbody>
              <% for(var i=0;i<banners.length;i++){ %>
              <tr>
                <td><%=banners[i].id%></td>
                <td><%=banners[i].title%></td>
                <td><%=banners[i].description%></td>
                <td><%=banners[i].href%></td>
                <td>
                  <a href="?act=mod&id=<%=banners[i].id%>">修改</a>
                  <a href="?act=del&id=<%=banners[i].id%>">删除</a>
                </td>
              </tr>
              <% } %>
            </tbody>
          </table>
    

    用的是ejs的模版。
    然后删除是同样的道理。

    router.get('/banners',function(req,res){
        switch(req.query.act){
          case 'mod':
            break;
          case 'del':
            db.query(`DELETE FROM banner_table WHERE id=${req.query.id}`,function(err,data){
              if(err){
                console.error(err);
                res.status(500).send('database error').end();
              }else{
                res.redirect('/admin/banners');
              }
            });
            break;
          default:
            db.query('SELECT * FROM banner_table',function(err,banners){
              if(err){
                console.error(err);
                res.status(500).send('database error').end();
              }else{
                // 将banners数据返回给前端,供ejs文件使用
                res.render('admin/banners.ejs',{banners});
              }
            });
            break;
        }
      });
    

    相关文章

      网友评论

          本文标题:nodejs数据的删除

          本文链接:https://www.haomeiwen.com/subject/pahwxftx.html