· 10 years ago · Feb 20, 2016, 12:00 PM
1var express = require('express');
2
3 var mysql = require('mysql');
4
5 var path = require('path');
6
7 var favicon = require('serve-favicon');
8
9 var logger = require('morgan');
10
11 var cookieParser = require('cookie-parser');
12
13 var bodyParser = require('body-parser');
14
15 var routes = require('./routes/index');
16
17 var users = require('./routes/users');
18
19 var app = express();
20 // view engine setup
21
22 app.set('views', path.join(__dirname, 'views'));
23
24 app.set('view engine', 'jade');
25
26 app.use(logger('dev'));
27
28 app.use(bodyParser.json());
29
30 app.use(bodyParser.urlencoded({ extended: false }));
31
32 app.use(cookieParser());
33
34 app.use(express.static(path.join(__dirname, 'public')));
35
36 app.use('/', routes);
37
38 app.use('/users', users);
39
40 // mysql initialization
41
42 var connection = mysql.createConnection({
43
44 host : 'localhost',
45
46 user : 'root',
47
48 password : 'root',
49
50 database : 'user'
51 });
52
53 // Database setup
54
55 connection.query('CREATE DATABASE IF NOT EXISTS user', function (err) {
56
57 if (err) throw err;
58
59 connection.query('USE user', function (err) {
60
61 if (err) throw err;
62
63 connection.query('CREATE TABLE IF NOT EXISTS user_info('
64
65 + 'email VARCHAR(30) NOT NULL,'
66
67 + 'username VARCHAR(30) NOT NULL,'
68
69 + 'PRIMARY KEY(username),'
70
71 + 'password VARCHAR(15) NOT NULL'
72
73 + ')', function (err) {
74
75 if (err) throw err;
76
77 });
78 });
79
80 });
81
82
83 //index
84
85
86 app.get("/myusers",function (req,res){
87
88 connection.query('SELECT * from user_info',function (err,results){
89
90 res.render('users/index',{users: results });
91
92 });
93
94 });
95
96
97 //SIGNUP
98
99
100 app.get("/myusers/signup",function (req,res){
101
102 res.render('users/signup');
103
104 });
105
106
107 //CREate
108
109
110 app.post("/myusers",function (req,res){
111
112 var email = req.body.email;
113
114 var userName = req.body.userName;
115
116 var password = req.body.password;
117
118 connection.query('INSERT INTO user_info (email, username, password) VALUES (?,
119
120 ?, ?)', [email, userName, password], function(err, results) {
121
122 if (err) res.json(err);
123
124 res.redirect('/myusers/'+email);
125
126
127
128 })
129
130 });
131
132
133 app.param('name',function(req,res,next,email){
134
135 connection.query('SELECT * from user_info where email=?',[email],function
136
137 (err,row){
138
139 if (err) res.json(err);
140
141 req.user=row[0];
142
143
144 next();
145
146 });
147
148 })
149
150 //SHOW
151
152 app.get('/myusers/:email',function(req,res){
153
154 res.render("users/show",{user:req.user});
155
156
157 });
158
159 // catch 404 and forward to error handler
160
161
162 app.use(function(req, res, next) {
163
164 var err = new Error('Not Found');
165
166 err.status = 404;
167
168 next(err);
169
170 });
171
172
173
174 // error handlers
175
176
177 // development error handler
178
179 // will print stacktrace
180
181 if (app.get('env') === 'development') {
182
183 app.use(function(err, req, res, next) {
184
185 res.status(err.status || 500);
186
187 res.render('error', {
188
189 message: err.message,
190
191 error: err
192
193 });
194
195 });
196
197 }
198
199 app.use(function(err, req, res, next) {
200
201 res.status(err.status || 500);
202
203 res.render('error', {
204
205 message: err.message,
206
207 error: {}
208
209 });
210
211 });
212
213 module.exports = app;
214
215h1 All Users
216
217 ul
218
219 each user in users
220
221 li: a(href="/myusers/#{user.email}") #{user.userName} (#{user.email})
222
223h1 new user
224
225 form(method="POST" action="/myusers")
226
227 table
228
229 tr
230
231 td User Email:
232
233 td
234
235 input#email(type="email", name="email")
236
237 tr
238
239 td Username:
240
241 td
242
243 input#userName(type="text", name="userName")
244
245 tr
246
247 td Password:
248
249 td
250
251 input#password(type="password", name="password")
252
253 tr
254
255 td
256
257 button(type="submit") Create
258
259h1 #{user.email}
260
261 ul
262
263 li Email:#{user.email}
264
265 li Username:#{user.usernName}