์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[javascript-issue01] for๋ฌธ๊ณผ ๋น„๋™๊ธฐ๐Ÿฅด

๋ณธ๋ฌธ

๐Ÿฅด์ง๋ฉดํ•œ ๋ฌธ์ œ ์ƒํ™ฉ

// A ์˜์—ญ์— ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ
router.get('/', async (req, res) => {    //async
    try {
        const students = await JoinedUser.find(req.query, ["userId", "alias", "jobId"])
            .populate('userId', 'email name alias jobId').populate('jobId').exec()
                  
        /*         A์˜์—ญ            */

        res.json(result)
    } catch (err) {
        res.status(500).json({ success: false, error: err });
    }
})

(1.1)
//  map์ด ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์ž„์„ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•œ ์ž˜๋ชป๋œ ์ฝ”๋“œ
let result = []
students.map(async(v,i)=>{
   const account=await Account.findOne({'studentId':v._id})
   await result.push({'name':v.userId.name,'email':v.userId.email,
           'alias':v.alias,'job':v.jobId,'balance':account.currentBalance})
           //console.log(i,result)
})
    
(1.2) 
// map์ด ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์ž„์„ ์ธ์ง€ํ•˜์ง€ ๋ชปํ•œ ์ž˜๋ชป๋œ ์ฝ”๋“œ
let result = await students.map(async(v,i)=>{
         const account=await Account.findOne({'studentId':v._id})
         return {'name':v.userId.name,'email':v.userId.email,
         'alias':v.alias,'job':v.jobId,'balance':account.currentBalance}
})
console.log(result)    // pending ๋ฐ˜ํ™˜

1.2) map์€ ๋น„๋™๊ธฐ ํ•จ์ˆ˜์ด๋ฏ€๋กœ(์ฝœ๋ฐฑ๋ฐ˜ํ™˜) ๋‚ด๋ถ€ ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๊ธฐ์ „์— map์ด ๋๋‚˜๋ฒ„๋ฆฐ๋‹ค. ๊ทธ๋ž˜์„œ pending์ด ๋ฆฌํ„ด๋œ๋‹ค.

 

 

(2)
//์žฌ๋Œ€๋กœ ๋œ ์ฝ”๋“œ   
let result = await Promise.all(
    students.map(async (v, i) => {
          const account = await Account.findOne({ 'studentId': v._id })
          return {
                    'name': v.userId.name, 'email': v.userId.email,
                    'alias': v.alias, 'job': v.jobId, 'balance': account.currentBalance
          }
    })
)

๋ชจ๋“  map ์˜ ๋น„๋™๊ธฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋“ค์ด ๋๋‚ ๋•Œ๊นŒ์ง€(fulfiled) ๊ธฐ๋‹ค๋ฆฐ ๋‹ค์Œ์— ๊ทธ ๊ฒฐ๊ณผ๋ฅผ result์— ์ „๋‹ฌํ•˜๋„๋ก ํ•œ๋‹ค.


๐Ÿค”๊ด€๋ จ ๊ฐœ๋…

ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๋‹ค ํ•ด๋„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์ข…๋ฃŒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ์—์„œ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์™ธ๋ถ€๋กœ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ๊ธฐ๋Œ€ํ•œ ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 


๐Ÿ“š์ƒˆ๋กœ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ

https://eundms.tistory.com/238

 

 

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ