-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.js
More file actions
121 lines (98 loc) · 3.74 KB
/
app.js
File metadata and controls
121 lines (98 loc) · 3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
var fs = require('fs'),
path=require('path'),
methods = require('methods'),
express = require('express'),
http = require('http'),
cors = require('cors'),
passport = require('passport'),
errorhandler = require('errorhandler'),
mongoose = require('mongoose'),
morgan=require('morgan'),
multer = require('multer');
const AutoIncrementFactory = require('mongoose-sequence');
var runSocketIo=require('./socket')
var app=express();
var server = http.createServer(app); //서버 생성 메소드(createServer)를 제공하며 파라미터로 express를 넘겨줌
//server 변수에 담은 이유? ttp.createServer() 메소드는 서버를 생성하는 작업을 하고 난 후 생성한 서버 객체를 리턴해줍니다. 생성된 서버를 제어하기 위해 server 변수에 담는 것입니다.
app.set('view engine','ejs');
app.set('views','./views');
app.use(morgan('dev'));
app.use(cors());
app.use(express.urlencoded({extended:false}));
app.use(express.json())
app.use(require('method-override')());
mongoose.connect('mongodb://127.0.0.1:27017/user');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error: '));
db.once('open', function callback() {
console.log('db connection');
});
const AutoIncrement = AutoIncrementFactory(db);
require('./models/User');
require('./models/Post');
require('./models/Comment');
require('./models/Product');
require('./models/Report');
require('./models/ChatRoom');
require('./models/Chat');
require('./models/Participant');
require('./config/passport');
app.use(require('./routes'))
app.use(express.static('uploadFiles'));
runSocketIo(server, mongoose)
app.get('/chatting', function(req,res) {
res.render('chat')
})
// error
app.use((req,res,next)=>{
var err=new Error('Not Found')
err.status=404;
return next(err);
})
app.use((err,req,res,next)=>{
if(err.name==='ValidationError'){
if(err.errors.email){
if(err.errors.email.kind==='regexp'){
err.errors.email.message="잘못된 이메일 형식입니다."
}
else err.errors.email.message="이미 가입된 이메일 주소 입니다."
return res.status(422).json({'message':err.errors.email.message,'status':422})
}
if(err.errors.accountname){
if(err.errors.accountname.kind==='regexp'){
err.errors.accountname.message="영문, 숫자, 밑줄, 마침표만 사용할 수 있습니다."
}
else err.errors.accountname.message="이미 사용중인 계정 ID입니다."
return res.status(422).json({'message':err.errors.accountname.message,'status':422})
}
if(err.errors.content){
err.errors.content.message='댓글을 입력해주세요.'
return res.status(422).json({'message':err.errors.content.message,'status':422})
}
}
if (err.name==='MongoServerError'){
if(err.codeName==='DuplicateKey'){
return res.status(422).json({'message':'이미 사용중인 계정 ID입니다.','status':422})
}
}
if (err.code==='credentials_required'){
return res.status(401).json({'message':"토큰이 없습니다.",'status':401})
}
if (err.code==='invalid_token'){
return res.status(401).json({'message':"유효하지 않은 토큰입니다.",'status':401})
}
if(err.name==='TypeError'){
return res.status(200).json({'message':"잘못된 접근입니다.",'status':200})
}
return next(err);
})
app.use((err,req,res,next)=>{
res.json(err)
return next(err);
})
runSocketIo(server, mongoose)
server.listen(5050,()=>{
var dir='./uploadFiles';
if(!fs.existsSync(dir)) fs.mkdirSync(dir);
console.log('start server')
});