Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 클로저
- git pair
- TypeScript
- url #querystring
- ESLint
- OOP
- 객체참조 #객체
- jest
- NPM
- this
- #cloudfront #s3 #html 확장자 없애기
- lightsail nodejs apache
- 기후변화
Archives
- Today
- Total
Hello World...
nodejs lowdb 테스트 중 return 본문
nodejs -express 에 lowdb를 연동해보려고 이것저것 해보고 있는데, res.end or res.json 앞에 return 을 작성 안 하면 에러가 발생한다는 점을 발견했다.
res.end() 또는 res.josn() 서버 응답 메서드를 실행해도 함수가 종료되지 않는다. 어떻게 보면 너무 당연한 것이지만, 서버 쪽 코드를 짜면서 은근 헷갈리는 부분인 것 같다.
return 을 통해 확실히 끝맺음(?) 해주어야 한다.
const express = require('express');
const app = express();
const port = 3003;
// lowdb setting
const low = require('lowdb');
const FileSync = require('lowdb/adapters/FileSync');
const adapter = new FileSync('db.json');
const db = low(adapter);
let obj = { results: [] };
let cntID = 1;
db.defaults(obj).write();
// middleware
app.use(express.json());
// routes
app.get('/', (req, res) => res.send('Hello World!'));
app.get('/db', (req, res) => {
if (req.query.roomname) {
const roomname = req.query.roomname;
const results = db
.get('results')
.filter({ roomname })
.value();
res.json(results); // 여기서 return res.json()을 해주지 않으면 실행은 되도 에러 메시지를 받게 된다.
// Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
}
const results = db.get('results').value();
res.json(results);
});
// 만약 바로 파라미터로 받으려면 아래와 같이
// app.get('/db/:roomname', (req, res) => {
// const roomname = req.params.roomname;
// const results = db
// .get('results')
// .filter({ roomname })
// .value();
// res.json(results);
// });
app.post('/db', (req, res) => {
const obj = {
id: cntID,
username: req.body.username,
text: req.body.text,
roomname: req.body.roomname,
date: new Date().toISOString()
};
db.get('results')
.push(obj)
.write();
++cntID;
console.log('post obj: ', obj);
console.log('cnt: ', cntID);
res.send('ok post');
});
// listening
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
'node.js' 카테고리의 다른 글
[코작作] nodejs 콜백(callback) 비동기 처리 공부! (0) | 2020.02.16 |
---|---|
nodejs - mysql 간단한 연동 공부 (0) | 2020.02.11 |
nodemon , lowdb 관련 계속 실행 문제 (0) | 2020.01.17 |
nodejs url, querystring module 예제 (0) | 2020.01.16 |
postman json 형식으로 post 요청 (0) | 2020.01.16 |
Comments