在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ nodejs和ejs配合起來的問題

nodejs和ejs配合起來的問題

問題是這樣的:
前臺想要修改的時候,點擊修改,然后后臺把mod_data給出去然后就可以修改。
我知道問題大概是default這里的問題,第一次點banner設(shè)置的時候是沒有mod_data的,因此報錯mod_data is not defined。
很想解決這個問題,卡了好久了。新手初學(xué)nodejs,還希望大家多多幫助。非常感謝大家。
應(yīng)該就是switch那里的問題,如果不修改,希望可以正常顯示,請問各位大牛該如何修改。

const express=require('express');
const common=require('../libs/common');
const mysql=require('mysql');

var db=mysql.createPool({
  host:'localhost',
  user:'root',
  password:'158298232',
  database:'learn'
});

module.exports=function(){
  var router=express.Router();

  //檢查登錄狀態(tài)
  router.use(function(req,res,next){
    // 為了防止重定向次數(shù)過多,這里需要有雙重條件
    if(!req.session['admin_id']&&req.url!='/login'){
      res.redirect('/admin/login');
    }else{
      next();
    }
  });

  router.get('/login',function(req,res){
    res.render('admin/login.ejs',{});
  });

  router.post('/login',function(req,res){
    var username=req.body.username;
    var password=common.md5(req.body.password+common.MD5_SUFFIX);
    db.query(`SELECT * FROM admin_table WHERE username='${username}'`,function(err,data){
      if(err){
        res.status(500).send('database error').end();
      }else{
        if(data.length==0){
          res.status(400).send('no this admin').end();
        }else{
          if(data[0].password==password){
            req.session['admin_id']=data[0].id;
            res.redirect('/admin/');
          }else{
            res.status(400).send('incorrect').end()
          }
        }
      }
    });
  });

  router.get('/',function(req,res){
    res.render('admin/index.ejs',{});
  });

  router.get('/banners',function(req,res){
    switch(req.query.act){
      case 'mod':
        db.query(`SELECT * FROM banner_table WHERE id=${req.query.id}`,function(err,data){
          if(err){
            console.error(err);
            res.status(500).send('database error').end();
          }else if(data.length==0){
            res.status(404).send('data not found').end();
          }else{
            db.query('SELECT * FROM banner_table',function(err,banners){
              if(err){
                console.error(err);
                res.status(500).send('database error').end();
              }else{
                res.render('admin/banners.ejs',{banners,mod_data:data[0]});
              }
            });
          }
        });
        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數(shù)據(jù)返回給前端,供ejs文件使用
            res.render('admin/banners.ejs',{banners});
          }
        });
        break;
    }
  });

  router.post('/banners',function(req,res){

    // 先從req中取得各樣的數(shù)據(jù)
    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{
      if(req.body.mod_id){ //修改
        db.query(`UPDATA banner_table SET \
          title='${req.body.title}',\
          description='${req.body.description}',\
          href='${req.body.href}',\
          WHERE ID=${req.body.title}`,function(err,data){
            if(err){
              console.error(err);
              res.status(500).send('database error').end();
            }else{
              res.redirect('/admin/banners');
            }
          }
        );
      }else{ //添加
        // 將前端POST過來的數(shù)據(jù)插入數(shù)據(jù)庫
        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');
          }
        });
      }
    }
  });
  return router;
};






  <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>index</title>
    </head>
    <body>
      <div class="page">
        <% include components/top.inc.ejs %>
        <div class="content-wrap">
          <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>
          <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>
          <div>
            <form action="?" method="post">
              標題:<input type="text" name="title" value="<%=mod_data.title%>"><br>
              描述:<textarea name="description"><%=mod_data.description%></textarea><br>
              鏈接:<input type="text" name="href" value="<%=mod_data.href%>"><br>
              <input type="submit" value="修改">
            </form>
          </div>
        </div>
      </div>
    </body>
    </html>

回答
編輯回答
尐飯團

如果僅僅是想解決未定義mod_data時報錯的問題,你可以這樣寫:

<%= locals.mod_data && locals.mod_data.title %>

這個是要傳遞到模板中的數(shù)據(jù)對象。

2017年5月5日 23:23