Page 548 - Nodejs 교과서 개정2판
P. 548

});
           ➋
           router.get('/room/:id',	async	(req,	res,	next)	=>	{
           		try	{
           				const	room	=	await	Room.findOne({	_id:	req.params.id	});
           				const	io	=	req.app.get('io');
           				if	(!room)	{
           						return	res.redirect('/?error=존재하지	않는	방입니다.');
           				}
           				if	(room.password	&&	room.password	!==	req.query.password)	{
           						return	res.redirect('/?error=비밀번호가	틀렸습니다.');
           				}
           				const	{	rooms	}	=	io.of('/chat').adapter;
           				if	(rooms	&&	rooms[req.params.id]	&&	room.max	<=	rooms[req.params.id].length)	{
           						return	res.redirect('/?error=허용	인원을	초과했습니다.');
           				}
           				return	res.render('chat',	{
           						room,
           						title:	room.title,
           						chats:	[],
           						user:	req.session.color,
           				});
           		}	catch	(error)	{
           				console.error(error);
           				return	next(error);
           		}
           });

           ➌
           router.delete('/room/:id',	async	(req,	res,	next)	=>	{
           		try	{
           				await	Room.remove({	_id:	req.params.id	});
           				await	Chat.remove({	room:	req.params.id	});
           				res.send('ok');
           				setTimeout(()	=>	{
           						req.app.get('io').of('/room').emit('removeRoom',	req.params.id);
           				},	2000);
           		}	catch	(error)	{
           				console.error(error);
           				next(error);
           		}
           });
           module.exports	=	router;
   543   544   545   546   547   548   549   550   551   552   553