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

؊݂ೞח Ѫਵ۽ ੉ܖযઉ ੓णפ׮

         ੉ઁ ۄ਋ఠী GET /good/:id৬ POST /good/:id/bidܳ ୶о೤פ׮


          routes/index.js
           ...
           router.get('/good/:id',	isLoggedIn,	async	(req,	res,	next)	=>	{
           		try	{
           				const	[good,	auction]	=	await	Promise.all([
           						Good.findOne({
           								where:	{	id:	req.params.id	},
           								include:	{
           										model:	User,
           										as:	'Owner',
           								},
           						}),
           						Auction.findAll({
           								where:	{	GoodId:	req.params.id	},
           								include:	{	model:	User	},
           								order:	[['bid',	'ASC']],
           						}),
           				]);
           				res.render('auction',	{
           						title:	`${good.name}	-	NodeAuction`,
           						good,
           						auction,
           				});
           		}	catch	(error)	{
           				console.error(error);
           				next(error);
           		}
           });
           router.post('/good/:id/bid',	isLoggedIn,	async	(req,	res,	next)	=>	{
           		try	{
           				const	{	bid,	msg	}	=	req.body;
           				const	good	=	await	Good.findOne({
           						where:	{	id:	req.params.id	},
           						include:	{	model:	Auction	},
           						order:	[[{	model:	Auction	},	'bid',	'DESC']],
           				});
           				if	(good.price	>=	bid)	{
           						return	res.status(403).send('시작	가격보다	높게	입찰해야	합니다.');
           				}
           				if	(new	Date(good.createdAt).valueOf()	+	(24	*	60	*	60	*	1000)	<	new	Date())	{
           						return	res.status(403).send('경매가	이미	종료되었습니다');
   581   582   583   584   585   586   587   588   589   590   591