node.js代码

  1 // 1. 引入 express
  2 var express = require('express');
  3 var formidable = require('formidable');
  4 var mysql = require('mysql');
  5 var session = require('express-session');
  6 var cookieParser = require('cookie-parser');
  7 
  8 // 2. 实例化。
  9 var app = express();
 10 
 11 // 配置。
 12 app.use(express.static('node_modules'));
 13 app.use(cookieParser());
 14 app.use(session({
 15     secret:'randomstring',
 16     resave: false,
 17     saveUninitialized:true,
 18     cookie:{
 19         maxAge:600000,
 20         hostOnly:true
 21     }
 22 }));
 23 
 24 
 25 
 26 // 设置 
 27 app.set('view engine', 'ejs');
 28 app.set('views', './views');
 29 
 30 
 31 
 32 // 3. 路由配置。
 33 // 登录。
 34 app.get('/admin/login', function(req, res){
 35     // res.send('ok');
 36     
 37     // console.log(req.session.info);
 38     
 39     // 解析模板。
 40     res.render('admin-login');
 41     
 42 });
 43 app.post('/admin/login', function(req, res){
 44 
 45     // req.session.info = null;
 46     // 判断是否有 cookie
 47     if(req.cookies.rememberme && req.session.admin){
 48         res.redirect('/admin/index');
 49     }
 50 
 51 
 52     // 实例化。
 53     var form = new formidable.IncomingForm();
 54 
 55     // 表单处理。
 56     form.parse(req, function(error, fields, files){
 57         // console.log(fields);
 58         // 获取用户名 密码。
 59         var name = fields.name;
 60         var password = fields.password;
 61         var rememberme = fields.rememberme;
 62         // console.log(rememberme);
 63 
 64         // 查询数据库。
 65         var con = mysql.createConnection({
 66             host:"localhost",
 67             user:"root",
 68             password:"",
 69             database:"php183"
 70         });
 71         // 连接。
 72         con.connect();
 73         // 执行查询。
 74         con.query("SELECT * FROM users WHERE name='"+ name +"'", function(err, results, fields){
 75             // console.log(results);
 76             // res.send('ok');
 77             
 78             if(results.length <= 0){
 79                 res.send('没有这个用户');
 80                 return ;
 81             }
 82 
 83             // 判断密码。
 84             if(results[0].password != password){
 85                 req.session.info = '密码错误!';
 86                 res.redirect('/admin/login');
 87             }else {
 88 
 89                 // 判断是否记住我。
 90                 if(rememberme == 'on')
 91                 {
 92                     console.log(111);
 93                     res.cookie('rememberme', 1, {maxAge: 600000, hostOnly:true});
 94                 }
 95 
 96                 // 将用户数据存入 session
 97                 req.session.admin = results[0];
 98 
 99                 // 跳转后台主页
100                 res.redirect('/admin/index');
101             }
102         });
103 
104         con.end();
105         return ;
106 
107     });
108 
109 
110 
111     // res.send('ok');
112 });
113 
114 app.get("/admin/index", function(req, res){
115     // 判断 session
116     if(!req.session.admin)
117     {
118         res.redirect('/admin/login');
119         return ;
120     }
121 
122     res.render('admin-index', {session:req.session});
123     
124 });
125 
126 // 文章管理
127 app.get('/admin/article/add', function(req, res){
128     // res.send('add')
129     
130     res.render('admin-article-add');
131 });
132 app.post('/admin/article/insert', function(req, res){
133 
134     // 实例化。
135     var form = new formidable.IncomingForm();
136 
137     // 表单处理。
138     form.parse(req, function(error, fields, files){
139         // console.log(fields);
140         var title = fields.title;
141         var content = fields.content;
142 
143 
144         // 查询数据库。
145         var con = mysql.createConnection({
146             host:"localhost",
147             user:"root",
148             password:"",
149             database:"php183"
150         });
151         // 连接。
152         con.connect();
153         // 执行查询。
154         con.query("INSERT INTO articles(title,content) VALUES('"+ title +"','"+ content +"')", function(err, results, fields){
155             // console.log(results);
156             if(results.affectedRows > 0)
157             {
158                 res.redirect('/admin/article/add');
159                 return ;
160             }else{
161                 res.redirect('/admin/article/add');
162                 return ;
163             }
164             
165         });
166 
167         con.end();
168         return ;
169     });
170 
171 
172     // res.send('insert')  
173 });
174 app.get('/admin/article/edit/:id([0-9]+)', function(req, res){
175     // 获取  id
176     var id = req.params.id;
177     var p = req.query.p;
178     console.log(p);
179     // 查询数据库。
180         var con = mysql.createConnection({
181             host:"localhost",
182             user:"root",
183             password:"",
184             database:"php183"
185         });
186         // 连接。
187         con.connect();
188         // 执行查询。
189         con.query("SELECT * FROM articles WHERE id="+ id, function(err, results, fields){
190             // console.log(results);
191             res.render('admin-article-edit', {data:results[0],p:p});
192             
193         });
194 
195         con.end();
196         return ;
197 
198     
199 
200 });
201 app.post('/admin/article/update', function(req, res){
202 
203     // 接收
204     var p = req.query.p;
205     // 实例化。
206     var form = new formidable.IncomingForm();
207 
208     // 表单处理。
209     form.parse(req, function(error, fields, files){
210         // console.log(fields);
211         var id = fields.id;
212         var title = fields.title;
213         var content = fields.content;
214 
215 
216         // 查询数据库。
217         var con = mysql.createConnection({
218             host:"localhost",
219             user:"root",
220             password:"",
221             database:"php183"
222         });
223         // 连接。
224         con.connect();
225         // 执行查询。
226         con.query("UPDATE articles SET title='"+ title +"',content='"+ content +"' WHERE id="+id, function(err, results, fields){
227             // console.log(results);
228             if(results.affectedRows > 0)
229             {
230                 res.redirect('/admin/article/index/'+ p);
231                 return ;
232             }else{
233                 res.redirect('/admin/article/edit/'+ id);
234                 return ;
235             }
236             
237         });
238 
239         con.end();
240         return ;
241     });
242 
243 
244 
245 
246     // res.send('update');
247 });
248 app.get('/admin/article/delete/:id([0-9]+)', function(req, res){
249     var id = req.params.id;
250     var p = req.query.p;
251 
252     // 查询数据库。
253         var con = mysql.createConnection({
254             host:"localhost",
255             user:"root",
256             password:"",
257             database:"php183"
258         });
259         // 连接。
260         con.connect();
261         // 执行查询。
262         con.query("DELETE FROM articles WHERE id="+id, function(err, results, fields){
263             // console.log(results);
264             if(results.affectedRows > 0)
265             {
266                 res.redirect('/admin/article/index/'+ p);
267                 return ;
268             }else{
269                 res.redirect('/admin/article/edit/'+ id);
270                 return ;
271             }
272             
273         });
274 
275         con.end();
276         return ;
277 
278 });
279 app.get('/admin/article/index/:p([0-9]+)', function(req, res){
280 
281     var p = req.params.p;
282     if(typeof(p) == 'undefined')
283     {
284         p = 1;
285     }
286     var num = 2;
287     var total = 0;
288     // 根据 p 处理需要的参数。
289     // 0,10
290     // 10,10
291     var start = (p-1)*num;
292     var end = num;
293     var limit = start + ',' + end;
294 
295 
296     // 查询数据库。
297     var con = mysql.createConnection({
298         host:"localhost",
299         user:"root",
300         password:"",
301         database:"php183"
302     });
303     // 连接。
304     con.connect();
305     // 执行查询数据总条数。
306     con.query({sql: 'SELECT COUNT(*) AS count FROM articles', timeout: 60000}, function (error, results, fields) {
307       if (error && error.code === 'PROTOCOL_SEQUENCE_TIMEOUT') {
308         throw new Error('too long to count table rows!');
309       }
310      
311       if (error) {
312         throw error;
313       }
314      
315       total = results[0].count;
316     });
317 
318 
319     // 执行查询。
320     con.query("SELECT * FROM articles LIMIT "+ limit, function(err, results, fields){
321         // console.log(results);
322         // res.send('111');
323         
324         res.render('admin-article-index', {data:results,total:total,num:num,p:p});
325         
326     });
327 
328     con.end();
329     return ;
330 
331     // res.send('index');
332 });
333 
334 // 4. 监听。
335 app.listen(3000);
原文地址:https://www.cnblogs.com/peilanluo/p/7282000.html