728x90
SMALL
node.js, mongoose를 이용하여 User 스키마를 만들고 user 정보를 db에 넣는 과정이다.
app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var residentRouter = require('./routes/residents');
var connect = require('./schemas');
var app = express();
connect();
// express app 설정
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// 미들웨어 연결
app.use(logger('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use(cookieParser('secret code'));
app.use(session({
resave: false,
saveUninitialized: false,
secret: 'secret code',
cookie: {
httpOnly: true,
secure: false,
},
}));
// 요청을 기록하는 morgan을 제외하고
// 정적 파일을 제공하는 데 영향을 끼치지 않는 아래를 거치는 것은 낭비
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/residents', residentRouter);
// catch 404 and forward to error handler, 404 처리 미들웨어
// 라우터에서 요청이 처리되지 않으면(일치 주소 없다면) 요청이 라우터 다음 위치한 여기로 오게됨
// http-errors(createError) 패키지가 에러 만들고, next에 담아 에러 핸들러로 보냄
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; // bin/www에서 사용하는 app module
routes/users.js
var express = require('express');
var User = require('../schemas/user');
var router = express.Router();
/* GET users listing. */
router.get('/', function (req, res, next) {
User.find({})
.then((users) => {
res.json(users);
})
.catch((err) => {
console.error(err);
next(err);
})
});
router.post('/', function (req, res, next) {
const user = new User({
floor: req.body.floor,
id: req.body.id,
});
user.save()
.then((result) => {
console.log(result);
res.status(201).json(result);
})
.catch((err) => {
console.error(err);
next(err);
})
});
module.exports = router;
https://www.zerocho.com/book/1
위의 코드는 해당 서적의 8강을 참고하였습니다.
글쓴이의 개인 목적에 맞게 User를 다르게 구성하여 코드가 다를 수 있습니다.
postman에서 /user 에 user 정보를 post방식으로 전달하여 db에 들어가는지 확인해보자.
URI를 적고, JSON형식으로 required:true인 정보를 적어준다.
mongoDB compass에서 다음과 같이 확인할 수 있다.
728x90
LIST
'Node.js' 카테고리의 다른 글
점호 프로그램 만들기- 과정 (4) | 2022.06.18 |
---|---|
User.findOne is not a function (0) | 2022.03.13 |
백, 프론트 서버 동시 실행 시 한쪽을 무시해요 (0) | 2022.02.15 |
[MongoDB] 몽구스 스키마 설계, password 암호화, 저장 (0) | 2022.02.13 |
TypeError: "x" is not a constructor (0) | 2022.02.13 |