{"id":27005,"date":"2025-04-08T15:13:47","date_gmt":"2025-04-08T08:13:47","guid":{"rendered":"https:\/\/hitek.com.vn\/?p=27005"},"modified":"2026-04-24T09:46:05","modified_gmt":"2026-04-24T02:46:05","slug":"web-server-development","status":"publish","type":"post","link":"https:\/\/hitek.com.vn\/ko\/blog-ko\/web-server-development\/","title":{"rendered":"2\uc2dc\uac04\ub9cc\uc5d0 \uc6f9\uc11c\ubc84 \uc27d\uac8c \uac1c\ubc1c\ud558\uae30 (Node.js + MongoDB)"},"content":{"rendered":"<p>\uc11c\ubc84 \uac1c\ubc1c? <strong>\ub450\ub835\uc9c0 \uc54a\ub2e4.<\/strong> \uadf8\ub0e5 <code>localhost:3000<\/code>\uc5d0\uc11c \ub0b4 \ucf54\ub4dc\uac00 \uc228 \uc26c\ub294 \uac78 \ubcf4\uace0 \uc2f6\ub2e4\uba74, \ub2f9\uc2e0\uc740 \uc81c\uc790\ub9ac\uc5d0 \uc654\ub2e4. \ubcf5\uc7a1\ud55c \uc774\ub860\uc740 \uc811\uc5b4\ub46c\ub77c. \uc6b0\ub9ac\ub294 \uc9c0\uae08\ubd80\ud130 <strong>JavaScript \ud558\ub098\ub85c<\/strong> \ud504\ub860\ud2b8\uc5d4\ub4dc\ub294 \ubb3c\ub860\uc774\uace0, \ubc31\uc5d4\ub4dc\uae4c\uc9c0 \uc4f8\uc5b4\ubc84\ub9b4 \uac83\uc774\ub2e4. \uc774\uac74 \ub2e8\uc21c\ud55c \ucf54\ub529\uc774 \uc544\ub2c8\ub2e4. <strong>\uadf8\uac83\uc740 &#8216;\ud480\uc2a4\ud0dd&#8217;\uc73c\ub85c\uc758 \uc120\uc5b8\uc2dd<\/strong>\uc774\ub2e4.<\/p>\n<p>\uc624\ub298 \uc6b0\ub9ac\uac00 \uc0ac\uc6a9\ud560 \ubb34\uae30\ub294 \ubc14\ub85c <strong>Node.js<\/strong>\uc640 <strong>MongoDB<\/strong>\ub2e4. \uc65c \uc774 \uc870\ud569\uc778\uac00? \uad81\uae08\ud558\uc9c0? <a href=\"https:\/\/nodejs.org\/\" target=\"_blank\" rel=\"noopener\">Node.js<\/a>\ub294 Chrome V8 \uc5d4\uc9c4\uc73c\ub85c \uad6c\ub3d9\ub418\ub294 \ube44\ub3d9\uae30 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \ub7f0\ud0c0\uc784\uc774\ub2e4. \uc27d\uac8c \ub9d0\ud574, \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc11c\ubc84 \uc5b8\uc5b4\ub85c \ub9cc\ub4e4\uc5b4\uc8fc\ub294 &#8216;\ud601\uba85&#8217;\uc774\ub098 \ub2e4\ub984\uc5c6\ub2e4. \uc5ec\uae30\uc5d0 \ub354\ud574, <a href=\"https:\/\/www.mongodb.com\/ko-kr\" target=\"_blank\" rel=\"noopener\">MongoDB<\/a>\ub294 JSON\ucc98\ub7fc \uc720\uc5f0\ud55c \uad6c\uc870\ub97c \uac00\uc9c4 NoSQL DB\ub2e4. \ud14c\uc774\ube14\uacfc \uceec\ub7fc\uc758 \ub531\ub531\ud55c \uaddc\uce59\uc5d0\uc11c \ubc97\uc5b4\ub098, <strong>\uc0dd\uac01\ud55c \ub300\ub85c \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud560 \uc218 \uc788\ub2e4<\/strong> .<\/p>\n<blockquote><p><strong>\ud669\uae08\ub960:<\/strong> &#8220;\uc11c\ubc84\ub294 \uc5b4\ub835\ub2e4&#8221;\ub294 \ub9d0\uc740 \uc774\uc81c \uc9c0\ub09c \uc138\ub300\uc758 \uc720\ubb3c\uc774\ub2e4. \ubc31\uc5d4\ub4dc\ub294 \ub354 \uc774\uc0c1 &#8216;\uc5b4\ub450\uc6b4 \ub9c8\ubc95&#8217;\uc774 \uc544\ub2c8\ub2e4. \uadf8\uc800 \ud558\ub098\uc758 \ub3c4\uad6c\uc77c \ubfd0\uc774\ub2e4.<\/p><\/blockquote>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_80 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\ubaa9\ucc28 \ud1a0\uae00\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/web-server-development\/#%EC%A4%80%EB%B9%84%EC%9A%B4%EB%8F%99_%EA%B0%9C%EB%B0%9C_%ED%99%98%EA%B2%BD_%EC%85%8B%ED%8C%85\" >\uc900\ube44\uc6b4\ub3d9: \uac1c\ubc1c \ud658\uacbd \uc14b\ud305<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/web-server-development\/#1%EB%8B%A8%EA%B3%84_Express_%EC%84%9C%EB%B2%84_%EB%9D%84%EC%9A%B0%EA%B8%B0_MongoDB_%EC%97%B0%EA%B2%B0\" >1\ub2e8\uacc4: Express \uc11c\ubc84 \ub744\uc6b0\uae30 &amp; MongoDB \uc5f0\uacb0<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/web-server-development\/#2%EB%8B%A8%EA%B3%84_%EC%8B%A4%EC%A0%9C_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%A3%BC%EA%B3%A0%EB%B0%9B%EA%B8%B0_CRUD%EC%9D%98_%EB%A7%88%EB%B2%95\" >2\ub2e8\uacc4: \uc2e4\uc81c \ub370\uc774\ud130 \uc8fc\uace0\ubc1b\uae30 (CRUD\uc758 \ub9c8\ubc95)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/web-server-development\/#%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%93%B0%EA%B8%B0%EC%99%80_%EC%9D%BD%EA%B8%B0\" >\ub370\uc774\ud130 \uc4f0\uae30\uc640 \uc77d\uae30<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/web-server-development\/#%EB%B0%B0%ED%8F%AC_%EC%84%B8%EC%83%81%EC%97%90_%EB%82%B4%EB%B3%B4%EC%9D%B4%EA%B8%B0\" >\ubc30\ud3ec: \uc138\uc0c1\uc5d0 \ub0b4\ubcf4\uc774\uae30<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/hitek.com.vn\/ko\/blog-ko\/web-server-development\/#%EB%A7%88%EB%AC%B4%EB%A6%AC_%EC%9D%B4%EC%A0%9C_%EB%8B%B9%EC%8B%A0%EC%9D%98_%EC%B0%A8%EB%A1%80%EB%8B%A4\" >\ub9c8\ubb34\ub9ac: \uc774\uc81c \ub2f9\uc2e0\uc758 \ucc28\ub840\ub2e4<\/a><\/li><\/ul><\/nav><\/div>\n<h2 id=\"-\"><span class=\"ez-toc-section\" id=\"%EC%A4%80%EB%B9%84%EC%9A%B4%EB%8F%99_%EA%B0%9C%EB%B0%9C_%ED%99%98%EA%B2%BD_%EC%85%8B%ED%8C%85\"><\/span>\uc900\ube44\uc6b4\ub3d9: \uac1c\ubc1c \ud658\uacbd \uc14b\ud305<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\ud551\uacc4\ub294 \uadf8\ub9cc. \ud130\ubbf8\ub110\uc744 \uc5f4\uc790. \uc544\uc9c1 Node.js\uac00 \uc5c6\ub2e4\uba74 <a href=\"https:\/\/nodejs.org\/en\/download\" target=\"_blank\" rel=\"noopener\">\uacf5\uc2dd \ubb38\uc11c<\/a>\uc5d0\uc11c LTS \ubc84\uc804\uc744 \ubc1b\ub294\ub2e4. \uc124\uce58\ub294 &#8216;\ub2e4\uc74c&#8217;\ub9cc \ub204\ub974\uba74 \ub05d\ub098\ub294 \ub2e8\uc21c\ud55c \uc791\uc5c5\uc774\ub2e4.<\/p>\n<p>\ud504\ub85c\uc81d\ud2b8 \ud3f4\ub354\ub97c \ub9cc\ub4e4\uace0, \uc544\ub798 \uba85\ub839\uc5b4\ub97c \ud130\ubbf8\ub110\uc5d0 \uadf8\ub300\ub85c \ubcf5\uc0ac\ud574 \ubd99\uc5ec\ub123\ub294\ub2e4. \uc774\uac83\uc774 \ub2f9\uc2e0\uc758 \uccab \ubc88\uc9f8 \uc9c0\ubc30 \uba85\ub839\uc5b4\ub2e4.<\/p>\n<pre><code class=\"lang-bash\"><span class=\"hljs-built_in\">npm<\/span> init -y\r\n<span class=\"hljs-built_in\">npm<\/span> install express mongodb\r\n<\/code><\/pre>\n<p><code>express<\/code>\ub294 \uc11c\ubc84\uc758 \ubf08\ub300\ub97c \ub9cc\ub4e4\uc5b4\uc8fc\ub294 \ud504\ub808\uc784\uc6cc\ud06c\uace0, <code>mongodb<\/code>\ub294 \uc6b0\ub9ac\uc758 DB\uc640 \ub300\ud654\ud560 \ub4dc\ub77c\uc774\ubc84\ub2e4 . \ud328\ud0a4\uc9c0\uac00 \uc124\uce58\ub418\ub294 \uc774 30\ucd08 \ub3d9\uc548, \ub2f9\uc2e0\uc740 \uc774\ubbf8 \uc61b\ub0a0\uc5d0 <code>index.html<\/code>\ub9cc \ub9cc\uc9c0\ub358 \uc0ac\ub78c\uacfc\ub294 \ub2e4\ub978 \uc874\uc7ac\uac00 \ub418\uc5b4 \uc788\ub2e4.<\/p>\n<h2 id=\"1-express-mongodb-\"><span class=\"ez-toc-section\" id=\"1%EB%8B%A8%EA%B3%84_Express_%EC%84%9C%EB%B2%84_%EB%9D%84%EC%9A%B0%EA%B8%B0_MongoDB_%EC%97%B0%EA%B2%B0\"><\/span>1\ub2e8\uacc4: Express \uc11c\ubc84 \ub744\uc6b0\uae30 &amp; MongoDB \uc5f0\uacb0<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\uc774\uc81c \uc9c4\uc9dc\ub2e4. <code>server.js<\/code> \ud30c\uc77c\uc744 \ud558\ub098 \uc0dd\uc131\ud558\uace0, \uc544\ub798 \ucf54\ub4dc\ub97c \uc785\ub825\ud558\ub77c. <strong>\ub178\uac00\ub2e4 \uae08\uc9c0<\/strong> \u2013 \ubcf5\uc0ac-\ubd99\uc5ec\ub123\uae30\ub294 \ud504\ub85c\uadf8\ub798\uba38\uc758 \ubbf8\ub355\uc774\ub2e4.<\/p>\n<pre><code class=\"lang-javascript\"><span class=\"hljs-keyword\">const<\/span> express = <span class=\"hljs-built_in\">require<\/span>(<span class=\"hljs-string\">'express'<\/span>);\r\n<span class=\"hljs-keyword\">const<\/span> { MongoClient } = <span class=\"hljs-built_in\">require<\/span>(<span class=\"hljs-string\">'mongodb'<\/span>);\r\n\r\n<span class=\"hljs-keyword\">const<\/span> app = express();\r\n<span class=\"hljs-keyword\">const<\/span> port = <span class=\"hljs-number\">3000<\/span>;\r\n\r\n<span class=\"hljs-comment\">\/\/ MongoDB \uc5f0\uacb0 URI (Atlas \ud074\ub77c\uc6b0\ub4dc \ucd94\ucc9c, \uc9c1\uc811 \ub85c\uceec \uc124\uce58\ub3c4 \uac00\ub2a5)<\/span>\r\n<span class=\"hljs-comment\">\/\/ \uc2e4\uc81c \uc5f0\uacb0 \uc2dc \uc5d0\ub7ec \ud578\ub4e4\ub9c1\uc740 \ud544\uc218\ub2e4.<\/span>\r\n<span class=\"hljs-keyword\">const<\/span> uri = <span class=\"hljs-string\">\"\uc5ec\uae30\uc5d0_\ub108\uc758_MongoDB_\uc8fc\uc18c\ub97c_\ub123\uc5b4\ub77c\"<\/span>;\r\n\r\nMongoClient.connect(uri, { <span class=\"hljs-attr\">useNewUrlParser<\/span>: <span class=\"hljs-literal\">true<\/span>, <span class=\"hljs-attr\">useUnifiedTopology<\/span>: <span class=\"hljs-literal\">true<\/span> })\r\n  .then(<span class=\"hljs-function\"><span class=\"hljs-params\">client<\/span> =&gt;<\/span> {\r\n    <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">'\u2705 DB \uc5f0\uacb0 \uc131\uacf5!'<\/span>);\r\n    <span class=\"hljs-keyword\">const<\/span> db = client.db(<span class=\"hljs-string\">'myFirstDatabase'<\/span>);\r\n    <span class=\"hljs-comment\">\/\/ \ub77c\uc6b0\ud305 \ub85c\uc9c1\uc740 \uc5ec\uae30\uc11c \uc2e4\ud589\ub41c\ub2e4.<\/span>\r\n  })\r\n  .catch(<span class=\"hljs-function\"><span class=\"hljs-params\">err<\/span> =&gt;<\/span> <span class=\"hljs-built_in\">console<\/span>.error(<span class=\"hljs-string\">'\u274c \uc5f0\uacb0 \uc2e4\ud328:'<\/span>, err));\r\n\r\napp.listen(port, () =&gt; {\r\n  <span class=\"hljs-built_in\">console<\/span>.log(<span class=\"hljs-string\">`\ud83d\udfe2 \uc11c\ubc84 \uae30\ub3d9 \uc644\ub8cc: http:\/\/localhost:<span class=\"hljs-subst\">${port}<\/span>`<\/span>);\r\n});\r\n<\/code><\/pre>\n<p>\uc5ec\uae30\uc11c \uc7a0\uae50. \ub85c\uceec\uc5d0 MongoDB\ub97c \uc124\uce58\ud558\uae30 \uadc0\ucc2e\ub2e4\uba74? \uadf8\ub798, \uadf8\uac8c \ub9de\ub2e4. \ub204\uac00 \ub0b4 \ucef4\ud4e8\ud130\uc5d0 \ub354\ubbf8 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\ub824\uace0 \ub4e4\uae4c. <a href=\"https:\/\/www.mongodb.com\/cloud\/atlas\" target=\"_blank\" rel=\"noopener\">MongoDB Atlas<\/a>\ub97c \uc0ac\uc6a9\ud558\uc790. \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \ud638\uc2a4\ud305\ub418\ub294 DB\ub294 \ubb34\ub8cc \ud2f0\uc5b4\ub85c\ub3c4 \ucda9\ubd84\ud558\uace0, <strong>\ubcf4\uc548\uacfc \uc548\uc815\uc131<\/strong> \ubaa8\ub450 \uc7a1\uc744 \uc218 \uc788\ub2e4 .<\/p>\n<h2 id=\"2-crud-\"><span class=\"ez-toc-section\" id=\"2%EB%8B%A8%EA%B3%84_%EC%8B%A4%EC%A0%9C_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%A3%BC%EA%B3%A0%EB%B0%9B%EA%B8%B0_CRUD%EC%9D%98_%EB%A7%88%EB%B2%95\"><\/span>2\ub2e8\uacc4: \uc2e4\uc81c \ub370\uc774\ud130 \uc8fc\uace0\ubc1b\uae30 (CRUD\uc758 \ub9c8\ubc95)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\uc11c\ubc84\uac00 \uc0b4\uc544\uc788\uc73c\ub2c8 \uc774\uc81c \uc6c0\uc9c1\uc5ec\uc57c \ud55c\ub2e4. \ud504\ub7f0\ud2b8\uc5d4\ub4dc\uc5d0\uc11c \uba54\ub274\ud310\uc744 \ubcf4\ub4ef, \ubc31\uc5d4\ub4dc\ub3c4 \uc694\uccad\uc744 \ubc1b\uc544\uc57c \ud55c\ub2e4. <code>app.listen<\/code> \uc704\uc5d0 \uc544\ub798 \ub77c\uc6b0\ud130\ub97c \uc5b9\uc5b4\ubcf4\uc790.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Method<\/th>\n<th style=\"text-align: left;\">Endpoint<\/th>\n<th style=\"text-align: left;\">\uae30\ub2a5<\/th>\n<th style=\"text-align: left;\">MongoDB \uba54\uc11c\ub4dc<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong>POST<\/strong><\/td>\n<td style=\"text-align: left;\"><code>\/api\/message<\/code><\/td>\n<td style=\"text-align: left;\">\ub370\uc774\ud130 \uc800\uc7a5<\/td>\n<td style=\"text-align: left;\"><code>insertOne()<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>GET<\/strong><\/td>\n<td style=\"text-align: left;\"><code>\/api\/messages<\/code><\/td>\n<td style=\"text-align: left;\">\uc804\uccb4 \uc870\ud68c<\/td>\n<td style=\"text-align: left;\"><code>find()<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong>DELETE<\/strong><\/td>\n<td style=\"text-align: left;\"><code>\/api\/message\/:id<\/code><\/td>\n<td style=\"text-align: left;\">\ub370\uc774\ud130 \uc0ad\uc81c<\/td>\n<td style=\"text-align: left;\"><code>deleteOne()<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3 id=\"-\"><span class=\"ez-toc-section\" id=\"%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%93%B0%EA%B8%B0%EC%99%80_%EC%9D%BD%EA%B8%B0\"><\/span>\ub370\uc774\ud130 \uc4f0\uae30\uc640 \uc77d\uae30<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"lang-javascript\">app.use(express.json()); <span class=\"hljs-comment\">\/\/ JSON \ud30c\uc2f1 \uc124\uc815<\/span>\r\n\r\n<span class=\"hljs-comment\">\/\/ 1. \ub370\uc774\ud130 \uc800\uc7a5\ud558\uae30 (POST \uc694\uccad)<\/span>\r\napp.post(<span class=\"hljs-string\">'\/api\/message'<\/span>, <span class=\"hljs-keyword\">async<\/span> (req, res) =&gt; {\r\n  <span class=\"hljs-keyword\">try<\/span> {\r\n    <span class=\"hljs-keyword\">const<\/span> { title, content } = req.body;\r\n    <span class=\"hljs-keyword\">const<\/span> result = <span class=\"hljs-keyword\">await<\/span> db.collection(<span class=\"hljs-string\">'posts'<\/span>).insertOne({ title, content, status: <span class=\"hljs-string\">'active'<\/span> });\r\n    res.status(<span class=\"hljs-number\">201<\/span>).json(result);\r\n  } <span class=\"hljs-keyword\">catch<\/span> (err) {\r\n    res.status(<span class=\"hljs-number\">500<\/span>).json({ message: <span class=\"hljs-string\">'\uc11c\ubc84 \uc5d0\ub7ec \ubc1c\uc0dd'<\/span> });\r\n  }\r\n});\r\n\r\n<span class=\"hljs-comment\">\/\/ 2. \ub370\uc774\ud130 \uac00\uc838\uc624\uae30 (GET \uc694\uccad)<\/span>\r\napp.<span class=\"hljs-keyword\">get<\/span>(<span class=\"hljs-string\">'\/api\/messages'<\/span>, <span class=\"hljs-keyword\">async<\/span> (req, res) =&gt; {\r\n  <span class=\"hljs-keyword\">const<\/span> cursor = db.collection(<span class=\"hljs-string\">'posts'<\/span>).find({});\r\n  <span class=\"hljs-keyword\">const<\/span> results = <span class=\"hljs-keyword\">await<\/span> cursor.toArray();\r\n  res.send(results);\r\n});\r\n<\/code><\/pre>\n<p><strong>\uc8fc\uc758 \uae4a\uac8c \ubd10\uc57c \ud560 \uc810:<\/strong> <code>find({})<\/code>\ub97c \ube44\uc6cc\ub450\uba74 \ubaa8\ub4e0 \ub370\uc774\ud130\ub97c \uac00\uc838\uc628\ub2e4. \ud504\ub85c\uc81d\ud2b8\uac00 \ucee4\uc9c0\uba74 <strong>\uc778\ub371\uc2f1<\/strong> \uc5c6\uc774\ub294 \uc18d\ub3c4\uac00 \ub290\ub824\uc9c4\ub2e4\ub294 \uc0ac\uc2e4\uc744 \uba85\uc2ec\ud558\ub77c . \uc9c0\uae08\uc740 \ubab0\ub77c\ub3c4 \uc88b\ub2e4. \ud558\uc9c0\ub9cc \uc801\uc5b4\ub3c4 &#8216;\ub0b4\uc77c\uc758 \ub098&#8217;\uac00 \uc11c\ubc84\ub97c \ucf1c\ub193\uace0 &#8220;\uc544, \ucffc\ub9ac\uac00 \uc65c \uc774\ub807\uac8c \ub290\ub9ac\uc9c0?&#8221; \ud558\uba70 \uba38\ub9ac\ub97c \uc950\uc5b4\ub72f\ub294 \uad11\uacbd\uc744 \uc6d0\ud558\uc9c0 \uc54a\ub294\ub2e4\uba74 \ub9d0\uc774\ub2e4.<\/p>\n<h2 id=\"-\"><span class=\"ez-toc-section\" id=\"%EB%B0%B0%ED%8F%AC_%EC%84%B8%EC%83%81%EC%97%90_%EB%82%B4%EB%B3%B4%EC%9D%B4%EA%B8%B0\"><\/span>\ubc30\ud3ec: \uc138\uc0c1\uc5d0 \ub0b4\ubcf4\uc774\uae30<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\ub85c\uceec\uc5d0\uc11c \ub9cc\uc871\ud558\uc9c0 \ub9c8\ub77c. \uc138\uc0c1\uc740 \ub113\uace0, \ub2f9\uc2e0\uc758 API\ub97c \uae30\ub2e4\ub9ac\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc788\ub2e4. AWS EC2 \uc778\uc2a4\ud134\uc2a4\ub97c \ud558\ub098 \ube4c\ub824\uc11c \ubc30\ud3ec\ud574\ubcf4\uc790 .<\/p>\n<ol>\n<li><strong>\uc6d0\uaca9 \uc11c\ubc84 \uc5f0\uacb0:<\/strong> SSH\ub85c EC2\uc5d0 \uc811\uc18d\ud55c\ub2e4.<\/li>\n<li><strong>\ud658\uacbd \uc138\ud305:<\/strong> <code>sudo apt install nodejs npm<\/code>\uc744 \uc785\ub825\ud574 Node.js\ub97c \uc124\uce58\ud55c\ub2e4.<\/li>\n<li><strong>\ubb34\uc911\ub2e8 \uc2e4\ud589:<\/strong> \uc5ec\uae30\uc11c <code>node server.js<\/code>\ub85c \uc2e4\ud589\ud558\uba74 \ud130\ubbf8\ub110\uc744 \ub044\ub294 \uc21c\uac04 \uc11c\ubc84\ub3c4 \uac19\uc774 \uaebc\uc9c4\ub2e4. <strong>\ucd08\ubcf4\uc790 \ud568\uc815<\/strong>\uc774\ub2e4. \uc6b0\ub9ac\ub294 <strong>PM2<\/strong>\ub97c \uc0ac\uc6a9\ud55c\ub2e4. <code>npm install -g pm2<\/code> \ud6c4 <code>pm2 start server.js<\/code>\ub97c \uc785\ub825\ud558\uba74 \uc11c\ubc84\uac00 \ub370\ubaac \ud615\ud0dc\ub85c \uc601\uc6d0\ud788 \uc0b4\uc544\uc788\ub2e4.<\/li>\n<\/ol>\n<h2 id=\"-\"><span class=\"ez-toc-section\" id=\"%EB%A7%88%EB%AC%B4%EB%A6%AC_%EC%9D%B4%EC%A0%9C_%EB%8B%B9%EC%8B%A0%EC%9D%98_%EC%B0%A8%EB%A1%80%EB%8B%A4\"><\/span>\ub9c8\ubb34\ub9ac: \uc774\uc81c \ub2f9\uc2e0\uc758 \ucc28\ub840\ub2e4<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\uae30\uc05c \uc18c\uc2dd\uacfc \uc2ac\ud508 \uc18c\uc2dd\uc774 \uc788\ub2e4. \uae30\uc05c \uc18c\uc2dd\uc740 <strong>\uc774\ub860\uc0c1 2\uc2dc\uac04<\/strong> \uc548\uc5d0 \uac8c\uc2dc\ud310 \ud558\ub098\ucbe4\uc740 \ub69d\ub531 \ub9cc\ub4e4 \uc218 \uc788\ub2e4\ub294 \uac83\uc774\ub2e4 . \uc2ac\ud508 \uc18c\uc2dd\uc740? \uc774\uc81c \ub2f9\uc2e0\uc740 &#8216;\uadf8\ub0e5 \uac1c\ubc1c\uc790&#8217;\uac00 \uc544\ub2c8\ub77c &#8216;\uc11c\ubc84\ub97c \ub2e4\ub8e8\ub294 \uc790&#8217;\ub77c\ub294 \ud0c0\uc774\ud2c0\uc744 \uc9ca\uc5b4\uc838\uc57c \ud55c\ub2e4\ub294 \uc810\uc774\ub2e4.<\/p>\n<p>\ub2e8\uc21c\ud788 \ub530\ub77c \uc801\uc9c0 \ub9d0\ub77c. \ucf54\ub4dc \ud55c \uc904 \ud55c \uc904\uc5d0 \uc758\ubb38\uc744 \uac00\uc838\ub77c. \uc65c \ube44\ub3d9\uae30(<code>async\/await<\/code>)\ub97c \uc368\uc57c \ud560\uae4c? <a href=\"https:\/\/developer.mozilla.org\/ko\/docs\/Glossary\/MVC\" target=\"_blank\" rel=\"noopener\">MVC \ud328\ud134<\/a>\uc740 \uc65c \uc911\uc694\ud560\uae4c? \uc774 \uae00\uc744 \ub2eb\uc73c\uba74, \ubc14\ub85c \ud130\ubbf8\ub110\uc744 \uc5f4\uc5b4\ub77c. \uc9c4\uc815\ud55c \uac1c\ubc1c\uc790\ub294 &#8216;\ubcf4\ub294 \uc790&#8217;\uac00 \uc544\ub2cc &#8216;<strong>\uc2e4\ud589\ud558\ub294 \uc790<\/strong>&#8216;\uc5d0\uac8c\ub9cc \ucc3e\uc544\uc628\ub2e4.<\/p>\n<p><strong>\uc9c0\uae08 \ubc14\ub85c \ud589\ub3d9\ud558\ub77c. <code>localhost:3000<\/code>\uc5d0\uc11c \ub2f9\uc2e0\uc758 \ucf54\ub4dc\ub97c \ud655\uc778\ud574\ubcf4\uc790.<\/strong><\/p>\n<hr \/>\n<p><em>\uc774 \ud3ec\uc2a4\ud305\uc740 \ud604\uc7a5 \uacbd\ud5d8\uc744 \ubc14\ud0d5\uc73c\ub85c \uc791\uc131\ub418\uc5c8\uc73c\uba70, \ud2b9\uc815 \uc81c\ud488\uc5d0 \ub300\ud55c \uad11\uace0\ub97c \ud3ec\ud568\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc11c\ubc84 \uac1c\ubc1c? \ub450\ub835\uc9c0 \uc54a\ub2e4. \uadf8\ub0e5 localhost:3000\uc5d0\uc11c \ub0b4 \ucf54\ub4dc\uac00 \uc228 \uc26c\ub294 \uac78 \ubcf4\uace0 \uc2f6\ub2e4\uba74, \ub2f9\uc2e0\uc740 \uc81c\uc790\ub9ac\uc5d0 \uc654\ub2e4. \ubcf5\uc7a1\ud55c \uc774\ub860\uc740 \uc811\uc5b4\ub46c\ub77c. \uc6b0\ub9ac\ub294 \uc9c0\uae08\ubd80\ud130 JavaScript \ud558\ub098\ub85c \ud504\ub860\ud2b8\uc5d4\ub4dc\ub294 \ubb3c\ub860\uc774\uace0, \ubc31\uc5d4\ub4dc\uae4c\uc9c0 \uc4f8\uc5b4\ubc84\ub9b4 \uac83\uc774\ub2e4. \uc774\uac74 \ub2e8\uc21c\ud55c \ucf54\ub529\uc774 \uc544\ub2c8\ub2e4. \uadf8\uac83\uc740 &#8216;\ud480\uc2a4\ud0dd&#8217;\uc73c\ub85c\uc758 \uc120\uc5b8\uc2dd\uc774\ub2e4. \uc624\ub298 \uc6b0\ub9ac\uac00 \uc0ac\uc6a9\ud560 \ubb34\uae30\ub294 \ubc14\ub85c Node.js\uc640 MongoDB\ub2e4. \uc65c \uc774 \uc870\ud569\uc778\uac00? \uad81\uae08\ud558\uc9c0? Node.js\ub294 Chrome V8 \uc5d4\uc9c4\uc73c\ub85c \uad6c\ub3d9\ub418\ub294 \ube44\ub3d9\uae30 \uc790\ubc14\uc2a4\ud06c\ub9bd\ud2b8 \ub7f0\ud0c0\uc784\uc774\ub2e4. \uc27d\uac8c [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":27006,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[70],"tags":[],"class_list":["post-27005","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-ko"],"_links":{"self":[{"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/posts\/27005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/comments?post=27005"}],"version-history":[{"count":4,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/posts\/27005\/revisions"}],"predecessor-version":[{"id":34714,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/posts\/27005\/revisions\/34714"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/media\/27006"}],"wp:attachment":[{"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/media?parent=27005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/categories?post=27005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hitek.com.vn\/ko\/wp-json\/wp\/v2\/tags?post=27005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}