ํฐ์คํ ๋ฆฌ ๋ทฐ
8.5 Sequelize ์ธ๋ํค๋ก ์ฐธ์กฐ ํ ์ด๋ธ ๋ฐ์ดํฐ ๊ฒ์ํ๊ธฐ
๋๋์ด๋ฐ๐พ 2018. 11. 1. 20:01์ธ๋ํค๋ฅผ ๊ฐ๋ ํ ์ด๋ธ์ ์ ์ํ๋ ์ด์ ๋ ํด๋น ํค ๊ฐ์ ํตํด ์ฐธ์กฐํ๋ ํ ์ด๋ธ์ ์ ๋ณด๋ฅผ ์ ๊ทผํ๊ธฐ ์ํจ์ด์ฃ . ์ด๋ฐ ์ํฉ์ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค.
๊ฐ ํ ์ด๋ธ์ id๊ฐ์ index ์ญํ ์ ํ๋ ๊ธฐ๋ณธ ํค ์ด๊ณ , board ํ ์ด๋ธ์ fk_userId ํ๋๋ userํ ์ด๋ธ์ ์ธ๋ํค์ ๋๋ค. ์ฆ fk_userId์ ๊ฐ์ ํตํด์ user ํ ์ด๋ธ์ ๋ชจ๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค๋ ์๊ธฐ๊ฐ ๋ฉ๋๋ค.
board ๋ฅผ ๊ฒ์ํ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๊ฒ์ํ์ด ๊ฐ์ง๊ณ ์๋ ํ๋๋ ๊ฐ์ฅ ๊ฐ๋จํ๊ฒ ํ๋ค๋ฉด ์ ๋ชฉ๊ณผ ๋ด์ฉ์ ๊ฐ์ง๊ณ ์์ ๊ฒ์ ๋๋ค.
๊ทผ๋ฐ ์ด ๊ธ์ ์ด ์ฌ๋์ด ๋๊ตฐ์ง๋ฅผ ์๊ณ ์ถ์ผ๋ฉด user ํ ์ด๋ธ์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์์ผํ ๊ฒ์ ๋๋ค. ๊ฒ์ํ ๊ธ์ ๋ก๋ฉํ๋ ํจ์๋ฅผ ๋ง๋ค์ด๋ณด์์ต๋๋ค.
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 | function boardLoadFunction(callback) { models.Board.findAll().then(function(result){ //result๊ฐ board ํ
์ด๋ธ์ ๋ชจ๋ ๊ฐ์ json์ผ๋ก ๋ฐํ var jsonObj = []; //board ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ๋ฐฐ์ด var tasks = [ function(call){ if(result.length==0) //๊ฒ์ํ์ ๊ธ์ด ํ๋๋ ์์ ๋0๊ฐ ๋ฆฌํด callback(0) else{ for(var i=0;i<result.length;i++) //๋ฐ์ดํฐ์ ๊ฐ์๋งํผ ๋ฐ๋ณต๋ฌธ jsonObj.push(result[i].dataValues) //jsonObj ๋ฐฐ์ด์ select * from board ๊ฐ์ ์ ์ฅ call(null,jsonObj); //์์ ์ฟผ๋ฆฌ๋ฌธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ํจ์๋ก ๋๊ฒจ์ค } }, function(jsonObj,call){ var i =0; var nameList = {}; //{ ์ธ๋ํค : ์ด๋ฆ } ์ ํํ๋ก ๋ง๋ค json ๋ฐ์ดํฐ jsonObj.forEach(function(element){ //board ํ
์ด๋ธ๊ณผ userํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋น๊ต models.User.findOne({ where:{id:element.fk_userId} //board์ ์ธ๋ํค์ user์ id๊ฐ์ ์ผ์น์ฌ๋ถ }).then(function(user){ nameList[element.fk_userId] = user.dataValues.name //nameList ๊ฐ์ฒด์ { ์ธ๋ํค : ์ด๋ฆ } ์ผ๋ก ์ ์ฅ i++; if(jsonObj.length==i) //๋ฐฐ์ด ๋๊น์ง ๋น๊ต๊ฐ ๋๋๋ฉด ๋ค์ ํจ์๋ก ๋๊ฒจ์ค call(null,nameList); }) }) }, function(nameList,call) { //jsonObj์ name๊ฐ์ ์ถ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ต์ข
์ ์ผ๋ก ๋ง๋ฆ var i=0 jsonObj.forEach(function(element){ if(nameList.hasOwnProperty(element.fk_userId)){ jsonObj[i].name = nameList[element.fk_userId] //jsonObj๊ฐ์ฒด์ name key์ key value ์ถ๊ฐ i++ } if(i==jsonObj.length) callback(jsonObj) //๋ฐฐ์ด ๋๊น์ง ๋น๊ต๊ฐ ๋๋๋ฉด app.js๋ก ๋๊ฒจ์ค }) } ] async.waterfall(tasks,function(err){ if(err) console.log(err) }) }).catch(function(err){ console.log(err); }) } | cs |
async ๋ชจ๋์ ์ด์ฉ ํ์๋๋ฐ, ์ผ๋จ ๊ฒ์ํ์ ๊ธ์ด ํ๋๋ ์์ ๋๋ฅผ ์ฒ๋ฆฌํ๊ณ ๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ board ํ ์ด๋ธ์ ์ ๋ณด๋ค ์๋ค๊ฐ ์ธ๋ํค ๊ฐ์ ์ผ์นํ๋ user ํ ์ด๋ธ์ name ๊ฐ์ result ๊ฐ์ฒด์ ํฉ์ณ์ callback ํจ์๋ก app.js์ ์ ๋ฌํด์ฃผ์์ต๋๋ค.
app.js
1 2 3 4 5 6 7 8 9 | app.get('/commuity',function(req,res){ board.boardLoadFunction(function(result){ var jsonStr = JSON.stringify(result); if(result.length==0) res.render('commuity',{data:0}) else res.render('commuity',{data:jsonStr}) }) }); | cs |
๊ฒ์ํ์ subject, contentํ๋์ ๋๋ถ์ด user ํ ์ด๋ธ์ ์ ๋ณด๊น์ง ํฉ์ณ์ง json ๊ฐ์ฒด๋ฅผ client ์ ์ ๋ฌํฉ๋๋ค.
board ํ ์ด๋ธ์ด ๊ฐ์ง๊ณ ์๋ subject์ contentํ๋ ์ธ์ ์ธ๋ํค๋ก user ํ ์ด๋ธ์ name ํ๋๋ฅผ ์ป์ด์์ ํฉ์ณ์ง ๊ฐ์ฒด๋ก ์์ฑ์๊น์ง ์ถ๋ ฅ์ ํด์ค ์ ์๊ฒ ๋์์ต๋๋ค.
'Node.js > Node.js ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
8.7 sequelize ์ฌ์ฉ ํ๊ฒฝ ์ค์ ๋ณ๊ฒฝ(useable multiple database in sequelize) (0) | 2019.10.27 |
---|---|
8.6 sequelize-auto ๋ชจ๋ ์ฌ์ฉํ๊ธฐ (0) | 2019.03.07 |
8.4 Sequelize ๋ก DML ๊ตฌํํด๋ณด๊ธฐ (0) | 2018.10.06 |
8.3 Sequelize foreignKey ์ง์ ํ๊ธฐ(cascade ์ ์ฉ) (0) | 2018.09.27 |
8.2 Sequelize ํ๊ฒฝ settingํ๊ธฐ (0) | 2018.06.28 |
- Total
- Today
- Yesterday
- node.js
- nestjs config
- Promise bulk
- nestjs module
- Request_Limit_Exceeded
- sequelize
- Promise error
- backend-framework
- Spring Async
- JavaScript
- ๋น๋๊ธฐ ์์ฒญ
- nestjs configService
- nestjs doc
- ๊ธฐ์์ฒญAPI
- nestjs project
- nestjs directory
- DeferredResult
- ํ๋ก๊ทธ๋๋จธ์ค
- android
- nestjs typeorm
- Spring
- NestJS
- typeorm ์ฐ๊ฒฐ
- nestjs/cli
- @nestjs/config
- docker mysql
- foreignkey
- ์๊ณ ๋ฆฌ์ฆ
- typeorm
- node.js backend
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |