app.js
4.13 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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
mongoose.connect('mongodb://root:root@localhost:27017/travelDB', {
dbName: 'travelDB',
useNewUrlParser: true,
useUnifiedTopology: true
}); // node앱을 mongoDB에 연결
//mongoDB express를 실행했을 때, username = root, password = root, Database = travelDB를 입력해서 연결 가능
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
var TravelSchema = mongoose.Schema({ //Travel이라는 스키마 생성(javascript 객체 생성자와 유사)
name: String,
address: String,
weather: String,
date: String,
url: String,
pos: String
});
const toTravel = mongoose.model('Travel', TravelSchema); // 스키마를 model로 정의 -> collection 명칭을 mongoose에서는 단수로 사용하지만
// mongodb에 저장될 때에는 복수 + 소문자로 저장됨 여기선 travels로 저장되므로 db.travels라고 호출해야 정상적인 값 얻기 가능
// db.travels.find()처럼 사용
var JeonJu = new toTravel({
name: '전주 한옥마을',
address: '전라북도 전주시 완산구 풍남동3가 기린대로 99',
weather: '맑음',
date: '2021-11-14'
});
var HongDae = new toTravel({
name: '서울 홍대거리',
address: '서울특별시 마포구 와우산로 94(상수동) 홍익대학교',
weather: '흐림',
date: '2021-11-15'
});
var Busan = new toTravel({
name: '부산 해운대',
address: '부산광역시 해운대구 중동',
weather: '우박',
date: '2021-11-16'
});
var Jeju = new toTravel({
name: '제주도',
address: '제주특별자치도 제주시 세종로 88',
weather: '비',
date: '2021-11-17'
});
// Travel 객체를 new로 생성해서 값을 입력해줌
JeonJu.save(function (error, data) {
if (error) {
console.log(error);
}
else {
console.log('saved!');
}
});
toTravel.insertMany([Seoul, Busan, Jeju], function (err) {
if (err) {
console.log(err);
} else {
mongoose.connection.close();
console.log("Successfully saved to travelDB");
}
});
toTravel.find(function (err, travels) { // toTravel이라는 모델에 저장된 데이터 전체 불러오기 = find(), 데이터 하나 가져오기 = findOne()
console.log('---READ ALL---');
if (err) {
console.log(err);
} else {
fruits.forEach(function (element) {
console.log(travels.name); // 각각의 이름(지명) 출력
});
}
});
const q0 = toTravel.find();
toTravel.updateOne({ // mongoDB에 저장된 document 내용 수정, 첫번째 파라미터로 수정할 document 선택, 두 번째 파라미터로 수정할 내용을 입력
_id: "5e859d8cef3a5d234c6c19c0"
}, {
name: "제주도"
}, function (err) {
if (err) {
console.log(err);
} else {
console.log("Successfully updated the document");
}
});
toTravel.deleteOne({ // mongoDB에 저장된 document 삭제. 첫 번째 파라미터로 삭제할 document를 선택하여 삭제
_id: "5e86a7a216b28f3b08a88755"
}, function (err) {
if (err) {
console.log(err);
} else {
console.log("Successfully deleted");
}
});
toTravel.find(function (error, travels) { //전체 가져오기
console.log('--- Read all ---');
if (error) {
console.log(error);
} else {
console.log(travels);
}
});
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function (req, res, next) {
next(createError(404));
});
// error handler
app.use(function (err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;