{"id":1614,"date":"2014-12-16T19:32:00","date_gmt":"2014-12-16T19:31:59","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1614"},"modified":"2023-06-28T00:24:10","modified_gmt":"2023-06-28T07:24:10","slug":"game-servers-and-couchbase-nodejs-part-1","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/game-servers-and-couchbase-nodejs-part-1\/","title":{"rendered":"Node.js\ub97c \uc0ac\uc6a9\ud55c \uac8c\uc784 \uc11c\ubc84 \ubc0f \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 - 1\ubd80"},"content":{"rendered":"<p>\uc694\uc998\uc740 \uac70\uc758 \ubaa8\ub4e0 \uac8c\uc784 \uc2a4\ud29c\ub514\uc624\uc5d0\uc11c \ud50c\ub808\uc774\uc5b4\uac00 \uc804 \uc138\uacc4\uc758 \uce5c\uad6c \ubc0f \ub2e4\ub978 \ud50c\ub808\uc774\uc5b4\uc640 \uc0c1\ud638 \uc791\uc6a9\ud558\uace0 \ud611\ub825\ud560 \uc218 \uc788\ub294 \ub124\ud2b8\uc6cc\ud06c \uac8c\uc784\uc744 \uac1c\ubc1c\ud558\uace0 \uc788\ub294 \uac83 \uac19\uc2b5\ub2c8\ub2e4. \uc774\uc804\uc5d0 \uc774\ub7ec\ud55c \uc11c\ubc84\ub97c \uad6c\ucd95\ud55c \uacbd\ud5d8\uc774 \uc788\uace0 Couchbase\uac00 \uc774\ub7ec\ud55c \uc2dc\uc2a4\ud15c\uc744 \ub4b7\ubc1b\uce68\ud558\ub294 \uc2a4\ud1a0\uc5b4\uc5d0 \uc801\ud569\ud558\ub2e4\ub294 \uc810\uc744 \uace0\ub824\ud560 \ub54c \uc774 \uc8fc\uc81c\uac00 \uae00\uc744 \uc4f0\uae30\uc5d0 \uc88b\uc740 \uc8fc\uc81c\ub77c\uace0 \uc0dd\uac01\ud588\uc2b5\ub2c8\ub2e4! \uc774 \uae00\uc740 \uc5ec\ub7ec \ud30c\ud2b8\ub85c \ub098\ub204\uc5b4 \uac01 \ud30c\ud2b8\uc5d0\uc11c \uac8c\uc784 \uc11c\ubc84\uc758 \ud2b9\uc815 \uce21\uba74\uc744 \uad6c\ud604\ud560 \uac83\uc774\uba70, PHP \ud074\ub77c\uc774\uc5b8\ud2b8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uc77c\ud55c \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uc791\uc131\ud558\uc5ec \uc774\ub97c \ubcf4\uc5ec\uc904 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<h1>\ud504\ub85c\uc81d\ud2b8 \ub808\uc774\uc544\uc6c3<\/h1>\n<p>\uba3c\uc800 HTTP \uc694\uccad\uc744 \ubcf4\ub0b4\uace0 \ubc1b\uc744 \uc218 \uc788\ub3c4\ub85d \uba87 \uac00\uc9c0 \uae30\ubcf8 \uc0ac\ud56d\uc744 \uc124\uc815\ud558\uace0 Couchbase \ud074\ub7ec\uc2a4\ud130\uc5d0 \uc5f0\uacb0\ud574\uc57c \ud569\ub2c8\ub2e4. \uc544\uc9c1 \uc774 \uc791\uc5c5\uc744 \uc218\ud589\ud558\ub294 \ubc29\ubc95\uc744 \uc798 \ubaa8\ub974\uc2dc\uaca0\ub2e4\uba74 \uc81c <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/intro-and-couchnode-100\/\">\uc774\uc804 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c<\/a> \uc5d0\uc11c \uc544\ub798\ubcf4\ub2e4 \uc870\uae08 \ub354 \uc790\uc138\ud788 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uac8c\uc784 \uc11c\ubc84 \ucf54\ub4dc\ub97c \uc815\ub9ac\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\ub294 \uba87 \uac1c\uc758 \ucd94\uac00 \ud3f4\ub354\uac00 \uc788\ub294 \uc77c\ubc18\uc801\uc778 Node.js \ub514\ub809\ud1a0\ub9ac \uad6c\uc870\ub85c \ud504\ub85c\uc81d\ud2b8\ub97c \uc2dc\uc791\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace\">\/lib\/<br \/>\n\/lib\/models\/<br \/>\n\/lib\/app.js<br \/>\n\/lib\/database.js<br \/>\n\/package.json<\/div>\n<\/div>\n<p>\uc77c\ubc18\uc801\uc778 Node.js \uad6c\uc870\uc5d0 \ub530\ub77c \ubaa8\ub4e0 \uc18c\uc2a4 \ud30c\uc77c\uc744 \ubcf4\uad00\ud558\ub294 'lib' \ud3f4\ub354\ub85c \uc2dc\uc791\ud558\uc5ec \uba54\uc778 \ud30c\uc77c \uc5ed\ud560\uc744 \ud558\ub294 lib\/server.js, \ub9c8\uc9c0\ub9c9\uc73c\ub85c \ud504\ub85c\uc81d\ud2b8 \uc885\uc18d\uc131 \ubc0f \uae30\ud0c0 \uba54\ud0c0 \ub370\uc774\ud130\ub97c \uc124\uba85\ud558\ub294 package.json\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. \ub610\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\uacb0\uc744 \uc911\uc559\uc5d0\uc11c \uad00\ub9ac\ud558\uc5ec \uac01 \uc694\uccad\uc5d0 \ub300\ud574 \uc0c8 \uc5f0\uacb0\uc744 \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \ud544\uc694\uac00 \uc5c6\ub3c4\ub85d \ud558\ub294 database.js\uc640 \ub2e4\uc591\ud55c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubaa8\ub378 \uc18c\uc2a4 \ucf54\ub4dc\ub97c \uc800\uc7a5\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \/lib\/models\/ \ud3f4\ub354\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n<h1>\uae30\ubcf8 \uc0ac\ud56d<\/h1>\n<p>Here is some content for your package.json. We give our project a name, point to its main Javascript file and then define a couple of prerequisite modules we will need later on. Once you have saved this file, executing `npm install` in your project root directory should install the referenced dependancies.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #3366cc\">\"main\"<\/span><span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">\".\/lib\/app\"<\/span><span style=\"color: #339933\">,<\/span><br \/>\n<span style=\"color: #3366cc\">\"\ub77c\uc774\uc120\uc2a4\"<\/span> <span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">\"Apache2\"<\/span><span style=\"color: #339933\">,<\/span><br \/>\n<span style=\"color: #3366cc\">\"name\"<\/span><span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">\"gameapi-couchbase\"<\/span><span style=\"color: #339933\">,<\/span><br \/>\n<span style=\"color: #3366cc\">\"\uc885\uc18d\uc131\"<\/span><span style=\"color: #339933\">:<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #3366cc\">\"couchbase\"<\/span><span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">&#8220;~1.0.0&#8221;<\/span><span style=\"color: #339933\">,<\/span><br \/>\n<span style=\"color: #3366cc\">\"express\"<\/span><span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">&#8220;~3.4.0&#8221;<\/span><span style=\"color: #339933\">,<\/span><br \/>\n<span style=\"color: #3366cc\">\"uuid\"<\/span><span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">&#8220;~1.4.1&#8221;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #339933\">,<\/span><br \/>\n<span style=\"color: #3366cc\">\"devDependencies\"<\/span><span style=\"color: #339933\">:<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #339933\">,<\/span><br \/>\n<span style=\"color: #3366cc\">\"\ubc84\uc804\"<\/span><span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">&#8220;0.0.1&#8221;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/div>\n<\/div>\n<p>\ub2e4\uc74c \ub2e8\uacc4\ub294 \uac8c\uc784 \uc11c\ubc84\uc758 \ud575\uc2ec\uc744 \uc124\uc815\ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774\uac83\uc740 \/lib\/app.js\uc5d0 \ubc30\uce58\ub429\ub2c8\ub2e4. \uc774 \ud30c\uc77c\uc758 \uc139\uc158\uc744 \ube14\ub85d\ubcc4\ub85c \uc0b4\ud3b4\ubcf4\uace0 \uac01 \uc139\uc158\uc774 \ubb34\uc5c7\uc744 \ud558\ub294\uc9c0 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uba3c\uc800 \uc774 \ud30c\uc77c\uc5d0 \ud544\uc694\ud55c \ubaa8\ub4c8\uc744 \uac00\uc838\uc640\uc57c \ud569\ub2c8\ub2e4. \uc9c0\uae08\uc740 HTTP \ub77c\uc6b0\ud305 \ubc0f \uad6c\ubb38 \ubd84\uc11d\uc744 \uc704\ud55c express \ubaa8\ub4c8\ub9cc \ud544\uc694\ud558\uc9c0\ub9cc \uc774 \ud29c\ud1a0\ub9ac\uc5bc\uc758 \ub4b7\ubd80\ubd84\uc5d0\uc11c \ub354 \ub9ce\uc740 \ubaa8\ub4c8\uc744 \ucd94\uac00\ud560 \uc608\uc815\uc785\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><span style=\"color: #003366;font-weight: bold\">var<\/span> express <span style=\"color: #339933\">=<\/span> require<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'express'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/div>\n<\/div>\n<p>\ub2e4\uc74c\uc73c\ub85c, express\ub97c \uc124\uc815\ud558\uace0, JSON POST \ubc0f PUT \ubcf8\ubb38\uc744 \uad6c\ubb38 \ubd84\uc11d\ud560 \uc218 \uc788\ub3c4\ub85d express\uc758 bodyParser \ud558\uc704 \ubaa8\ub4c8\uc744 \ucd94\uac00\ub85c \ucca8\ubd80\ud569\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ub098\uc911\uc5d0 \uac8c\uc784 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c JSON \ub370\uc774\ud130 \ube14\ub85d\uc744 \uc804\ub2ec\ud574\uc57c \ud560 \ub54c \ub3c4\uc6c0\uc774 \ub429\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><span style=\"color: #003366;font-weight: bold\">var<\/span> \uc571 <span style=\"color: #339933\">=<\/span> express<span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n\uc571\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<span style=\"color: #003366;font-weight: bold\">\uc0ac\uc6a9<\/span><span style=\"color: #009900\">(<\/span>\uc775\uc2a4\ud504\ub808\uc2a4.<span style=\"color: #660066\">bodyParser<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/div>\n<\/div>\n<p>\ub370\ubaa8 \ubaa9\uc801\uc73c\ub85c \uc11c\ubc84 \ub8e8\ud2b8\uc5d0 \ub300\ud55c \uc694\uccad\uc744 \ucc98\ub9ac\ud558\uae30 \uc704\ud574 HTTP \uc11c\ubc84\uc5d0 \uac04\ub2e8\ud55c \uacbd\ub85c\ub97c \ucd94\uac00\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\uc571\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<span style=\"color: #660066\">get<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">&#8216;\/&#8217;<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>req<span style=\"color: #339933\">,<\/span> res<span style=\"color: #339933\">,<\/span> \ub2e4\uc74c<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\nres.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">{<\/span>\ubbf8\ub2c8\uc5b8<span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">'\ub098\ub294 \ubfcc\ub9ac\uc774\ub2c8 \ub0b4 \uc55e\uc5d0 \uc808\ud558\ub77c!'<\/span><span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/div>\n<\/div>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c \ud3ec\ud2b8 3000\uc5d0\uc11c HTTP \uc11c\ubc84\uac00 \uc218\uc2e0 \ub300\uae30\ud558\ub3c4\ub85d \uc124\uc815\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\uc571\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<span style=\"color: #660066\">\ub4e3\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #cc0000\">3000<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span> <span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n\ucf58\uc194.<span style=\"color: #660066\">\ub85c\uadf8<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'\ud3ec\ud2b8 3000\uc5d0\uc11c \uc218\uc2e0 \uc911'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/div>\n<\/div>\n<p>\ub2e4\uc74c\uc740 \uc9c0\uae08\uae4c\uc9c0 \uc571.js\uac00 \uc5b4\ub5a4 \ubaa8\uc2b5\uc774\uc5b4\uc57c \ud558\ub294\uc9c0\uc5d0 \ub300\ud55c \ub300\ub7b5\uc801\uc778 \uc544\uc774\ub514\uc5b4\uc785\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\n<p><span style=\"color: #003366;font-weight: bold\">var<\/span> express <span style=\"color: #339933\">=<\/span> require<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'express'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p><span style=\"color: #003366;font-weight: bold\">var<\/span> \uc571 <span style=\"color: #339933\">=<\/span> express<span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n\uc571\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<span style=\"color: #003366;font-weight: bold\">\uc0ac\uc6a9<\/span><span style=\"color: #009900\">(<\/span>\uc775\uc2a4\ud504\ub808\uc2a4.<span style=\"color: #660066\">bodyParser<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p>\uc571\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<span style=\"color: #660066\">get<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">&#8216;\/&#8217;<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>req<span style=\"color: #339933\">,<\/span> res<span style=\"color: #339933\">,<\/span> \ub2e4\uc74c<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\nres.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">{<\/span>\ubbf8\ub2c8\uc5b8<span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">'\ub098\ub294 \ubfcc\ub9ac\uc774\ub2c8 \ub0b4 \uc55e\uc5d0 \uc808\ud558\ub77c!'<\/span><span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p>\uc571\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<span style=\"color: #660066\">\ub4e3\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #cc0000\">3000<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span> <span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n\ucf58\uc194.<span style=\"color: #660066\">\ub85c\uadf8<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'\ud3ec\ud2b8 3000\uc5d0\uc11c \uc218\uc2e0 \uc911'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<\/div>\n<\/div>\n<p>For the last bit of our project basics, lets set up our database connection. The code is fairly straightforward, we import the couchbase module and subsequently export a new connection to our locally hosted server and the bucket &#8216;gameapi&#8217; through a property of the module named `mainBucket`.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\n<p><span style=\"color: #003366;font-weight: bold\">var<\/span> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 <span style=\"color: #339933\">=<\/span> require<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'couchbase'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p><span style=\"color: #006600;font-style: italic\">\/\/ \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84\uc5d0 \uc5f0\uacb0<\/span><\/p>\n<\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\ubaa8\ub4c8.<span style=\"color: #660066\">\uc218\ucd9c<\/span>.<span style=\"color: #660066\">\uba54\uc778\ubc84\ud0b7<\/span> <span style=\"color: #339933\">=<\/span> <span style=\"color: #003366;font-weight: bold\">new<\/span> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4.<span style=\"color: #660066\">\uc5f0\uacb0<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">{<\/span>\ubc84\ud0b7<span style=\"color: #339933\">:<\/span><span style=\"color: #3366cc\">'gameapi'<\/span><span style=\"color: #009900\">}<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #009900\">{<\/span><span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/div>\n<\/div>\n<p>At this point if you open a terminal in your project root and execute `node lib\/app.js`, you should see the message &#8220;Listening on port 3000&#8221;. You can also now point your browser to `https:\/\/localhost:3000` and see our work so far in action.<\/p>\n<p>\uc774 \uc2dc\uc810\uc5d0\uc11c \ud2b9\uc815 HTTP \uc694\uccad\uc744 \uc791\uc131\ud560 \uc218 \uc788\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc124\uce58\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4. \uc800\ub294 \uac1c\uc778\uc801\uc73c\ub85c \uad6c\uae00 \ud06c\ub86c\uc6a9 POSTman \ud655\uc7a5 \ud504\ub85c\uadf8\ub7a8\uc744 \uc88b\uc544\ud569\ub2c8\ub2e4. \ub098\uc911\uc5d0 \ub2e8\uc21c\ud55c GET \uc694\uccad\uc774 \uc544\ub2cc \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub97c \ud14c\uc2a4\ud2b8\ud558\uace0 \uc2f6\uc744 \ub54c \uc720\uc6a9\ud558\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4!<\/p>\n<h1>\uacc4\uc815 \ub9cc\ub4e4\uae30 - \uacc4\uc815 \ubaa8\ub378<\/h1>\n<p>Now that we have our basic server running, lets starting working on the &#8216;game&#8217; portion of our game server. We are going to start by implementing the account creation endpoint which will be accessible by doing a POST request to the `\/users` URI. To start this process, we are going to first build a model for our endpoint handler to deal with to abstract some of the details of our database implementation. These models are where the bulk of our interactions with Couchbase Server will happen.<\/p>\n<p>Lets first start by creating a new file in our `\/lib\/models` folder called &#8216;accountmodel.js&#8217;. Once you&#8217;ve got your accountmodel.js file ready and opened, lets start by importing some of the modules we will need.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><span style=\"color: #003366;font-weight: bold\">var<\/span> uuid <span style=\"color: #339933\">=<\/span> require<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'uuid'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #003366;font-weight: bold\">var<\/span> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 <span style=\"color: #339933\">=<\/span> require<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'couchbase'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #003366;font-weight: bold\">var<\/span> db <span style=\"color: #339933\">=<\/span> require<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'.\/..\/\ub370\uc774\ud130\ubca0\uc774\uc2a4'<\/span><span style=\"color: #009900\">)<\/span>.<span style=\"color: #660066\">\uba54\uc778\ubc84\ud0b7<\/span><span style=\"color: #339933\">;<\/span><\/div>\n<\/div>\n<p>\ubcf4\uc2dc\ub2e4\uc2dc\ud53c \uc9c0\uae08 \ub2f9\uc7a5 \ud544\uc694\ud55c \ubaa8\ub4c8\uc740 4\uac00\uc9c0\uc785\ub2c8\ub2e4. \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uac1d\uccb4\uc5d0 \ub300\ud55c UUID\ub97c \uc0dd\uc131\ud558\uae30 \uc704\ud574 uuid \ubaa8\ub4c8\uc744 \uc0ac\uc6a9\ud560 \uac83\uc785\ub2c8\ub2e4. \ub9ce\uc740 \uc0ac\ub78c\ub4e4\uc774 Couchbase\uc758 incr\/decr \uc2dc\uc2a4\ud15c\uc744 \uc0ac\uc6a9\ud558\uc5ec \uad6c\ud604\ub41c \uc2dc\ud000\uc2a4 \uce74\uc6b4\ud130\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \ubcf4\uc558\uc9c0\ub9cc, \uc800\ub294 \ucd94\uac00 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc791\uc5c5\uc744 \ud560 \ud544\uc694\uac00 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \uc5ec\uae30\uc11c \uc0ac\uc6a9\ud560 UUID \ubc29\ubc95\uc744 \ud6e8\uc52c \uc120\ud638\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc73c\ub85c \ud544\uc694\ud55c \ub2e4\uc591\ud55c \uc0c1\uc218(\uc8fc\ub85c \uc624\ub958)\uc5d0 \uc561\uc138\uc2a4\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ub4c8\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ubaa8\ub4c8\uc744 \uac00\uc838\uc640\uc11c \uc55e\uc11c \ub9cc\ub4e0 \uac8c\uc784\uc5d0\uc774\ud30c\uc774 \ubc84\ud0b7\uc5d0 \ub300\ud55c \uc5f0\uacb0\uc744 \uac00\uc838\uc635\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc73c\ub85c \ubaa8\ub378\uc5d0 \ud544\uc694\ud558\uc9c0\ub9cc \ub098\uba38\uc9c0 \uc11c\ubc84\uc5d0\ub294 \uc911\uc694\ud558\uc9c0 \uc54a\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc218\uc900 \uc18d\uc131\uc744 \uc81c\uac70\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\ub294 \uac04\ub2e8\ud55c \ud5ec\ud37c \ud568\uc218\ub97c \uc815\uc758\ud569\ub2c8\ub2e4. \uc9c0\uae08\uc740 'type' \ud504\ub85c\ud37c\ud2f0\uac00 \uc720\uc77c\ud558\uac8c \uc81c\uac70\ud560 \ud504\ub85c\ud37c\ud2f0\uc785\ub2c8\ub2e4. \uc774 \uc18d\uc131\uc740 \ub098\uc911\uc5d0 \ub9f5 \ub9ac\ub355\uc158\uc744 \uc218\ud589\ud560 \ub54c \ubc84\ud0b7\uc758 \ud2b9\uc815 \uc544\uc774\ud15c\uc774 \uc5b4\ub5a4 \uc885\ub958\uc758 \uc624\ube0c\uc81d\ud2b8\uc778\uc9c0 \uc2dd\ubcc4\ud558\uae30 \uc704\ud574 gameapi\uc5d0\uc11c \uc0ac\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span> cleanUserObj<span style=\"color: #009900\">(<\/span>\uac1d\uccb4<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\uc0ad\uc81c<\/span> obj.<span style=\"color: #660066\">\uc720\ud615<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \uac1d\uccb4<span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/div>\n<\/div>\n<p>\uc774\uc81c AccountModel \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span> \uacc4\uc815 \ubaa8\ub378<span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/div>\n<\/div>\n<p>\uadf8\ub9ac\uace0 \uc774 \ud30c\uc77c\uc744 \uac00\uc838\uc624\ub294 \ub2e4\ub978 \ud30c\uc77c\ub85c \ud074\ub798\uc2a4\ub97c \ub0b4\ubcf4\ub0c5\ub2c8\ub2e4. \ud2b9\uc815 \ud30c\uc77c\uc774 \ub0b4\ubcf4\ub0b4\ub294 \ub0b4\uc6a9\uc744 \uc2dd\ubcc4\ud558\ub824\uace0 \ud560 \ub54c \uc27d\uac8c \ucc3e\uc744 \uc218 \uc788\ub3c4\ub85d \uc774 \ubb38\uc7a5\uc744 \ud56d\uc0c1 \ud30c\uc77c \ud558\ub2e8\uc5d0 \ub450\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\ubaa8\ub4c8.<span style=\"color: #660066\">\uc218\ucd9c<\/span> <span style=\"color: #339933\">=<\/span> \uacc4\uc815 \ubaa8\ub378<span style=\"color: #339933\">;<\/span><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<\/div>\n<p>\uc774\uc81c \ubaa8\ub378 \uc0c1\uc6a9\uad6c\uac00 \uc644\uc131\ub418\uc5c8\uc73c\ubbc0\ub85c \uc0ac\uc6a9\uc790 \uac1d\uccb4\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\ub294 create \ud568\uc218\ub97c \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud568\uc218\ub97c \ub354 \uc27d\uac8c \uc124\uba85\ud558\uae30 \uc704\ud574 \ub354 \uc791\uc740 \ub369\uc5b4\ub9ac\ub85c \ub098\ub204\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud568\uc218 \uc790\uccb4\uc758 \uc815\uc758\ubd80\ud130 \uc2dc\uc791\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\uacc4\uc815 \ubaa8\ub378.<span style=\"color: #660066\">create<\/span> <span style=\"color: #339933\">=<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>\uc0ac\uc6a9\uc790<span style=\"color: #339933\">,<\/span> \ucf5c\ubc31<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #339933\">;<\/span><\/div>\n<\/div>\n<p>\ub2e4\uc74c\uc73c\ub85c, Couchbase \ubc84\ud0b7\uc5d0 \uc0bd\uc785\ud560 \uac1d\uccb4\ub97c \ub9cc\ub4e4\uc5b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc704\uc5d0\uc11c \uc5b8\uae09\ud55c \ub300\ub85c \ub098\uc911\uc5d0 \uc0ac\uc6a9\ud560 \uac1d\uccb4\uc758 \uc720\ud615\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc0ac\uc6a9\uc790\ub97c \uc804\uccb4\uc801\uc73c\ub85c \ucc38\uc870\ud558\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub418\ub294 UID\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc0dd\uc131 \ud568\uc218\uc5d0 \uc804\ub2ec\ub41c \uc0ac\uc6a9\uc790 \uc138\ubd80 \uc815\ubcf4\ub97c \ubcf5\uc0ac\ud569\ub2c8\ub2e4. \ubaa8\ub378\uc5d0 \uc804\ub2ec\ub418\ub294 \ub370\uc774\ud130\uc5d0 \ub300\ud55c \uc720\ud6a8\uc131 \uac80\uc0ac\ub97c \uc218\ud589\ud558\uc9c0 \uc54a\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\ub294\ub370, \uc774\ub294 \ub300\ubd80\ubd84\uc758 \uacbd\uc6b0 \uc694\uccad \ucc98\ub9ac \ucf54\ub4dc\uac00 \ubb34\uc5c7\uc744 \uc218\ub77d\ud558\uac70\ub098 \uc218\ub77d\ud558\uc9c0 \uc54a\uc744\uc9c0 \ub354 \uc798 \uc54c\uace0 \uc788\uace0 \ubaa8\ub378\uc740 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud560 \ucc45\uc784\ub9cc \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc774 \ubb38\uc11c\ub97c \ucc38\uc870\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \ud0a4\ub97c \uc0dd\uc131\ud558\uba70, \uc774\ub97c \uc704\ud574 \ubb38\uc11c \uc720\ud615\uacfc \uc0ac\uc6a9\uc790 UID\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\n<p><span style=\"color: #003366;font-weight: bold\">var<\/span> \uc0ac\uc6a9\uc790 \ubb38\uc11c <span style=\"color: #339933\">=<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n\uc720\ud615<span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">'user'<\/span><span style=\"color: #339933\">,<\/span><br \/>\nuid<span style=\"color: #339933\">:<\/span> uuid.<span style=\"color: #660066\">v4<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span><br \/>\n<span style=\"color: #000066\">\uc774\ub984<\/span><span style=\"color: #339933\">:<\/span> \uc0ac\uc6a9\uc790.<span style=\"color: #000066\">\uc774\ub984<\/span><span style=\"color: #339933\">,<\/span><br \/>\n\uc0ac\uc6a9\uc790 \uc774\ub984<span style=\"color: #339933\">:<\/span> \uc0ac\uc6a9\uc790.<span style=\"color: #660066\">\uc0ac\uc6a9\uc790 \uc774\ub984<\/span><span style=\"color: #339933\">,<\/span><br \/>\n\ube44\ubc00\ubc88\ud638<span style=\"color: #339933\">:<\/span> \uc0ac\uc6a9\uc790.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p><span style=\"color: #003366;font-weight: bold\">var<\/span> \uc0ac\uc6a9\uc790 \ubb38\uc11c \uc774\ub984 <span style=\"color: #339933\">=<\/span> <span style=\"color: #3366cc\">'user-'<\/span> <span style=\"color: #339933\">+<\/span> userDoc.<span style=\"color: #660066\">uid<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<\/div>\n<\/div>\n<p>\ub098\uc911\uc5d0 \uc0ac\uc6a9\uc790 \uc544\uc774\ub514\ub85c \uc774 \uc0ac\uc6a9\uc790\ub97c \ucc3e\uc744 \uc218 \uc788\ub3c4\ub85d \ud558\uae30 \uc704\ud574(\uc0ac\uc6a9\uc790\uac00 \uc790\uc2e0\uc758 UID\ub97c \uae30\uc5b5\ud558\uac8c \ud558\ub294 \uac83\uc740 \uc88b\uc740 \uc0dd\uac01\uc774 \uc544\ub2d9\ub2c8\ub2e4!) '\ucc38\uc870 \ubb38\uc11c', \uc989 \uc0ac\uc6a9\uc790\uc758 \uc0ac\uc6a9\uc790 \uc544\uc774\ub514\ub97c \uae30\ubc18\uc73c\ub85c \uc0ac\uc6a9\uc790\uc758 \ubb38\uc11c\ub97c \ub2e4\uc2dc \uac00\ub9ac\ud0a4\ub294 \ud0a4\uac00 \uc788\ub294 \ubb38\uc11c\ub97c \ub9cc\ub4ed\ub2c8\ub2e4(\uc0ac\uc6a9\uc790 \uc544\uc774\ub514\ub97c \uc0ac\uc6a9). \uc774\ub807\uac8c \ud558\uba74 \uc5ec\ub7ec \uc0ac\uc6a9\uc790\uac00 \ub3d9\uc77c\ud55c \uc0ac\uc6a9\uc790 \uc544\uc774\ub514\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \ubc29\uc9c0\ud560 \uc218 \uc788\ub2e4\ub294 \ucd94\uac00\uc801\uc778 \uc774\uc810\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><span style=\"color: #003366;font-weight: bold\">var<\/span> refDoc <span style=\"color: #339933\">=<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n\uc720\ud615<span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">'username'<\/span><span style=\"color: #339933\">,<\/span><br \/>\nuid<span style=\"color: #339933\">:<\/span> userDoc.<span style=\"color: #660066\">uid<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #003366;font-weight: bold\">var<\/span> refDocName <span style=\"color: #339933\">=<\/span> <span style=\"color: #3366cc\">'\uc0ac\uc6a9\uc790 \uc774\ub984-'<\/span> <span style=\"color: #339933\">+<\/span> userDoc.<span style=\"color: #660066\">\uc0ac\uc6a9\uc790 \uc774\ub984<\/span><span style=\"color: #339933\">;<\/span><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<\/div>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c, \uc774\ub7ec\ud55c \ubb38\uc11c\ub97c Couchbase \ubc84\ud0b7\uc5d0 \uc0bd\uc785\ud574\uc57c \ud569\ub2c8\ub2e4. \uba3c\uc800 \ucc38\uc870 \ubb38\uc11c\ub97c \uc0bd\uc785\ud558\uace0 \uc0ac\uc6a9\uc790\uc5d0\uac8c \uc0ac\uc6a9\uc790 \uc774\ub984\uc744 \uac00\uc838\uc654\ub2e4\ub294 \uba54\uc2dc\uc9c0\ub97c \ubc18\ud658\ud558\uace0 \ub2e4\ub978 \uc624\ub958\ub97c \uac04\ub2e8\ud788 \uc804\ub2ec\ud558\uc5ec keyAlreadyExists \uc624\ub958\ub97c \uad6c\uccb4\uc801\uc73c\ub85c \ucc98\ub9ac\ud569\ub2c8\ub2e4(\ubaa8\ub378 \uc218\uc900\uc5d0\uc11c Couchbase \uc624\ub958\ub97c \ub798\ud551\ud574\uc57c \ud558\uc9c0\ub9cc \uc774 \uc2dc\ub9ac\uc988\uc758 \uc774 \uc2dc\uc810\uc5d0\uc11c\ub294 \uc911\uc694\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4). \uc5ec\uae30\uc11c \ucc38\uc870 \ubb38\uc11c\ub97c \uba3c\uc800 \uc0bd\uc785\ud558\ub294 \uac83\uc774 \uc911\uc694\ud55c \uc774\uc720\ub294 ++TODO++ \uc65c \ub2e4\uc2dc \uc911\uc694\ud55c\uac00? -TODO-. \ub2e4\uc74c\uc73c\ub85c \uc0ac\uc6a9\uc790 \ubb38\uc11c \uc790\uccb4\ub97c \uc0bd\uc785\ud558\uace0 \ub9c8\uc9c0\ub9c9\uc73c\ub85c \uc804\ub2ec\ubc1b\uc740 \ucf5c\ubc31\uc744 \ud638\ucd9c\ud569\ub2c8\ub2e4. \uba3c\uc800 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc218\uc900\uc758 \uc18d\uc131\uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ub2e4\ub978 \uacc4\uce35\uc73c\ub85c \uc720\ucd9c\ub418\uc9c0 \uc54a\ub3c4\ub85d \uc55e\uc11c \ub9cc\ub4e0 \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubc18\ud658\ub41c \uac1d\uccb4\ub97c \uc704\uc0dd \ucc98\ub9ac\ud569\ub2c8\ub2e4. \ub610\ud55c \ucf5c\ubc31\uc744 \ud1b5\ud574 'cas' \uac12\uc744 \uc804\ub2ec\ud558\uace0 \uc788\uc74c\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub294 \ub098\uc911\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc740 \uc791\uc5c5\uc744 \uc218\ud589\ud574\uc57c \ud560 \ub54c \uc911\uc694\ud569\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/optimistic-or-pessimistic-locking-which-one-should-you-pick\/\">\ub099\uad00\uc801 \uc7a0\uae08<\/a> \ub97c \ud074\ub9ad\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\n<p>db.<span style=\"color: #660066\">\ucd94\uac00<\/span><span style=\"color: #009900\">(<\/span>refDocName<span style=\"color: #339933\">,<\/span> refDoc<span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span>err <span style=\"color: #339933\">&amp;&amp;<\/span> err.<span style=\"color: #660066\">\ucf54\ub4dc<\/span> <span style=\"color: #339933\">===<\/span> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4.<span style=\"color: #660066\">\uc624\ub958<\/span>.<span style=\"color: #660066\">keyAlreadyExists<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \ucf5c\ubc31<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'\uc9c0\uc815\ud55c \uc0ac\uc6a9\uc790 \uc544\uc774\ub514\uac00 \uc774\ubbf8 \uc874\uc7ac\ud569\ub2c8\ub2e4'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span> <span style=\"color: #000066;font-weight: bold\">else<\/span> <span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \ucf5c\ubc31<span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/p>\n<p>db.<span style=\"color: #660066\">\ucd94\uac00<\/span><span style=\"color: #009900\">(<\/span>\uc0ac\uc6a9\uc790 \ubb38\uc11c \uc774\ub984<span style=\"color: #339933\">,<\/span> \uc0ac\uc6a9\uc790 \ubb38\uc11c<span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>err<span style=\"color: #339933\">,<\/span> \uacb0\uacfc<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \ucf5c\ubc31<span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/p>\n<p>\ucf5c\ubc31<span style=\"color: #009900\">(<\/span><span style=\"color: #003366;font-weight: bold\">null<\/span><span style=\"color: #339933\">,<\/span> cleanUserObj<span style=\"color: #009900\">(<\/span>\uc0ac\uc6a9\uc790 \ubb38\uc11c<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> \uacb0\uacfc.<span style=\"color: #660066\">cas<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<\/div>\n<\/div>\n<p>\uc9c0\uae08\uae4c\uc9c0 \uacc4\uc815\ubaa8\ub378.js \ud30c\uc77c\uc758 \ubaa8\uc2b5\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\n<p><span style=\"color: #003366;font-weight: bold\">var<\/span> uuid <span style=\"color: #339933\">=<\/span> require<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'uuid'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #003366;font-weight: bold\">var<\/span> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 <span style=\"color: #339933\">=<\/span> require<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'couchbase'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #003366;font-weight: bold\">var<\/span> db <span style=\"color: #339933\">=<\/span> require<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'.\/..\/\ub370\uc774\ud130\ubca0\uc774\uc2a4'<\/span><span style=\"color: #009900\">)<\/span>.<span style=\"color: #660066\">\uba54\uc778\ubc84\ud0b7<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p><span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span> cleanUserObj<span style=\"color: #009900\">(<\/span>\uac1d\uccb4<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\uc0ad\uc81c<\/span> obj.<span style=\"color: #660066\">\uc720\ud615<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \uac1d\uccb4<span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/p>\n<p><span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span> \uacc4\uc815 \ubaa8\ub378<span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/p>\n<p>\uacc4\uc815 \ubaa8\ub378.<span style=\"color: #660066\">create<\/span> <span style=\"color: #339933\">=<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>\uc0ac\uc6a9\uc790<span style=\"color: #339933\">,<\/span> \ucf5c\ubc31<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #003366;font-weight: bold\">var<\/span> \uc0ac\uc6a9\uc790 \ubb38\uc11c <span style=\"color: #339933\">=<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n\uc720\ud615<span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">'user'<\/span><span style=\"color: #339933\">,<\/span><br \/>\nuid<span style=\"color: #339933\">:<\/span> uuid.<span style=\"color: #660066\">v4<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span><br \/>\n<span style=\"color: #000066\">\uc774\ub984<\/span><span style=\"color: #339933\">:<\/span> \uc0ac\uc6a9\uc790.<span style=\"color: #000066\">\uc774\ub984<\/span><span style=\"color: #339933\">,<\/span><br \/>\n\uc0ac\uc6a9\uc790 \uc774\ub984<span style=\"color: #339933\">:<\/span> \uc0ac\uc6a9\uc790.<span style=\"color: #660066\">\uc0ac\uc6a9\uc790 \uc774\ub984<\/span><span style=\"color: #339933\">,<\/span><br \/>\n\ube44\ubc00\ubc88\ud638<span style=\"color: #339933\">:<\/span> \uc0ac\uc6a9\uc790.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #003366;font-weight: bold\">var<\/span> \uc0ac\uc6a9\uc790 \ubb38\uc11c \uc774\ub984 <span style=\"color: #339933\">=<\/span> <span style=\"color: #3366cc\">'user-'<\/span> <span style=\"color: #339933\">+<\/span> userDoc.<span style=\"color: #660066\">uid<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p><span style=\"color: #003366;font-weight: bold\">var<\/span> refDoc <span style=\"color: #339933\">=<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n\uc720\ud615<span style=\"color: #339933\">:<\/span> <span style=\"color: #3366cc\">'username'<\/span><span style=\"color: #339933\">,<\/span><br \/>\nuid<span style=\"color: #339933\">:<\/span> userDoc.<span style=\"color: #660066\">uid<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #003366;font-weight: bold\">var<\/span> refDocName <span style=\"color: #339933\">=<\/span> <span style=\"color: #3366cc\">'\uc0ac\uc6a9\uc790 \uc774\ub984-'<\/span> <span style=\"color: #339933\">+<\/span> userDoc.<span style=\"color: #660066\">\uc0ac\uc6a9\uc790 \uc774\ub984<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p>db.<span style=\"color: #660066\">\ucd94\uac00<\/span><span style=\"color: #009900\">(<\/span>refDocName<span style=\"color: #339933\">,<\/span> refDoc<span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span>err <span style=\"color: #339933\">&amp;&amp;<\/span> err.<span style=\"color: #660066\">\ucf54\ub4dc<\/span> <span style=\"color: #339933\">===<\/span> \uce74\uc6b0\uce58\ubca0\uc774\uc2a4.<span style=\"color: #660066\">\uc624\ub958<\/span>.<span style=\"color: #660066\">keyAlreadyExists<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \ucf5c\ubc31<span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'\uc9c0\uc815\ud55c \uc0ac\uc6a9\uc790 \uc544\uc774\ub514\uac00 \uc774\ubbf8 \uc874\uc7ac\ud569\ub2c8\ub2e4'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span> <span style=\"color: #000066;font-weight: bold\">else<\/span> <span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \ucf5c\ubc31<span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/p>\n<p>db.<span style=\"color: #660066\">\ucd94\uac00<\/span><span style=\"color: #009900\">(<\/span>\uc0ac\uc6a9\uc790 \ubb38\uc11c \uc774\ub984<span style=\"color: #339933\">,<\/span> \uc0ac\uc6a9\uc790 \ubb38\uc11c<span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>err<span style=\"color: #339933\">,<\/span> \uacb0\uacfc<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \ucf5c\ubc31<span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/p>\n<p>\ucf5c\ubc31<span style=\"color: #009900\">(<\/span><span style=\"color: #003366;font-weight: bold\">null<\/span><span style=\"color: #339933\">,<\/span> cleanUserObj<span style=\"color: #009900\">(<\/span>\uc0ac\uc6a9\uc790 \ubb38\uc11c<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">,<\/span> \uacb0\uacfc.<span style=\"color: #660066\">cas<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p>\ubaa8\ub4c8.<span style=\"color: #660066\">\uc218\ucd9c<\/span> <span style=\"color: #339933\">=<\/span> \uacc4\uc815 \ubaa8\ub378<span style=\"color: #339933\">;<\/span><\/p>\n<\/div>\n<\/div>\n<h1>\uacc4\uc815 \uc0dd\uc131 - \uc694\uccad \ucc98\ub9ac<\/h1>\n<p>\uc774\uc81c \uacc4\uc815 \ubaa8\ub378\uc5d0\uc11c \uc0dd\uc131 \ud568\uc218\ub97c \uc644\uc131\ud588\uc73c\ubbc0\ub85c \uc774\uc81c \uacc4\uc815 \uc0dd\uc131 \uc694\uccad\uc744 \ucc98\ub9ac\ud558\uace0 \uc774\ub7ec\ud55c \uc694\uccad\uc744 \ud568\uc218\uc5d0 \uc804\ub2ec\ud558\ub294 \uc775\uc2a4\ud504\ub808\uc2a4 \uacbd\ub85c\ub97c \uc791\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uba3c\uc800 \uacbd\ub85c\ub97c \uc815\uc758\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\uc571\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<span style=\"color: #660066\">post<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'\/users'<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>req<span style=\"color: #339933\">,<\/span> res<span style=\"color: #339933\">,<\/span> \ub2e4\uc74c<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #006600;font-style: italic\">\/\/ \ub2e4\uc74c \ube44\ud2b8\ub294 \uc5ec\uae30\uc5d0 \ub4e4\uc5b4\uac11\ub2c8\ub2e4!<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/div>\n<\/div>\n<p>\uadf8\ub9ac\uace0... \ud544\uc694\ud55c \ub370\uc774\ud130\uac00 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc5d0 \uc804\ub2ec\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud558\uae30 \uc704\ud574 \uba87 \uac00\uc9c0 \uc720\ud6a8\uc131 \uac80\uc0ac\ub97c \uc218\ud589\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span><span style=\"color: #339933\">!<\/span>req.<span style=\"color: #660066\">body<\/span>.<span style=\"color: #000066\">\uc774\ub984<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> res.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #cc0000\">400<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #3366cc\">'\uc774\ub984\uc744 \uc9c0\uc815\ud574\uc57c \ud568'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span><span style=\"color: #339933\">!<\/span>req.<span style=\"color: #660066\">body<\/span>.<span style=\"color: #660066\">\uc0ac\uc6a9\uc790 \uc774\ub984<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> res.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #cc0000\">400<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #3366cc\">'\uc0ac\uc6a9\uc790 \uc544\uc774\ub514\ub97c \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span><span style=\"color: #339933\">!<\/span>req.<span style=\"color: #660066\">body<\/span>.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> res.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #cc0000\">400<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #3366cc\">'\ube44\ubc00\ubc88\ud638\ub97c \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/div>\n<\/div>\n<p>\ub370\uc774\ud130\uac00 *\uae30\uce68* \"\uc720\ud6a8\uc131 \uac80\uc0ac\"*\uac00 \uc644\ub8cc\ub418\uba74 \uc0ac\uc6a9\uc790 \ube44\ubc00\ubc88\ud638\uc758 SHA1 \ud574\uc2dc\ub97c \uc0dd\uc131\ud55c \ub2e4\uc74c(\uc0ac\uc6a9\uc790\uc758 \ube44\ubc00\ubc88\ud638\ub97c \uc77c\ubc18 \ud14d\uc2a4\ud2b8\ub85c \uc800\uc7a5\ud558\uc9c0 \ub9c8\uc138\uc694!) \uc774 \uae00\uc758 \uc55e\ubd80\ubd84\uc5d0\uc11c \ub9cc\ub4e0 \uc0dd\uc131 \ud568\uc218\ub97c \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc0ac\uc6a9\uc790 \uac1d\uccb4\uc5d0\uc11c \uc0ac\uc6a9\uc790 \ube44\ubc00\ubc88\ud638\ub97c \uc81c\uac70\ud55c \ud6c4 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \ub2e4\uc2dc \uc804\ub2ec\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc5ed\uc2dc \ubcf4\uc548\uc744 \uc704\ud574 \uc0ac\uc6a9\uc790\uc758 \ube44\ubc00\ubc88\ud638(\uc5b4\ub5a4 \ud615\uc2dd\uc774\ub4e0)\uac00 \uc804\uc1a1\ub418\ub294 \uac83\uc744 \ucd5c\ub300\ud55c \uc81c\ud55c\ud558\uae30 \uc704\ud55c \uac83\uc785\ub2c8\ub2e4.<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\"><\/div>\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\n<p><span style=\"color: #003366;font-weight: bold\">var<\/span> newUser <span style=\"color: #339933\">=<\/span> req.<span style=\"color: #660066\">body<\/span><span style=\"color: #339933\">;<\/span><br \/>\nnewUser.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span> <span style=\"color: #339933\">=<\/span> \ud06c\ub9bd\ud2b8.<span style=\"color: #660066\">sha1<\/span><span style=\"color: #009900\">(<\/span>newUser.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p>\uacc4\uc815 \ubaa8\ub378.<span style=\"color: #660066\">create<\/span><span style=\"color: #009900\">(<\/span>req.<span style=\"color: #660066\">body<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>err<span style=\"color: #339933\">,<\/span> \uc0ac\uc6a9\uc790<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \ub2e4\uc74c<span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/p>\n<p><span style=\"color: #000066;font-weight: bold\">\uc0ad\uc81c<\/span> \uc0ac\uc6a9\uc790.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span><span style=\"color: #339933\">;<\/span><br \/>\nres.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span>\uc0ac\uc6a9\uc790<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<\/div>\n<\/div>\n<p>\uc694\uc57d\ud558\uc790\uba74, \uc804\uccb4 \uacc4\uc815 \uc0dd\uc131 \uacbd\ub85c\ub294 \ub2e4\uc74c\uacfc \uac19\uc544\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"javascript geshifilter-javascript\" style=\"font-family: monospace\">\n<p>\uc571\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<span style=\"color: #660066\">post<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #3366cc\">'\/users'<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>req<span style=\"color: #339933\">,<\/span> res<span style=\"color: #339933\">,<\/span> \ub2e4\uc74c<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span><span style=\"color: #339933\">!<\/span>req.<span style=\"color: #660066\">body<\/span>.<span style=\"color: #000066\">\uc774\ub984<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> res.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #cc0000\">400<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #3366cc\">'\uc774\ub984\uc744 \uc9c0\uc815\ud574\uc57c \ud568'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span><span style=\"color: #339933\">!<\/span>req.<span style=\"color: #660066\">body<\/span>.<span style=\"color: #660066\">\uc0ac\uc6a9\uc790 \uc774\ub984<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> res.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #cc0000\">400<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #3366cc\">'\uc0ac\uc6a9\uc790 \uc544\uc774\ub514\ub97c \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span><span style=\"color: #339933\">!<\/span>req.<span style=\"color: #660066\">body<\/span>.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span><span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> res.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span><span style=\"color: #cc0000\">400<\/span><span style=\"color: #339933\">,<\/span> <span style=\"color: #3366cc\">'\ube44\ubc00\ubc88\ud638\ub97c \uc9c0\uc815\ud574\uc57c \ud569\ub2c8\ub2e4'<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/p>\n<p><span style=\"color: #003366;font-weight: bold\">var<\/span> newUser <span style=\"color: #339933\">=<\/span> req.<span style=\"color: #660066\">body<\/span><span style=\"color: #339933\">;<\/span><br \/>\nnewUser.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span> <span style=\"color: #339933\">=<\/span> \ud06c\ub9bd\ud2b8.<span style=\"color: #660066\">sha1<\/span><span style=\"color: #009900\">(<\/span>newUser.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<p>\uacc4\uc815 \ubaa8\ub378.<span style=\"color: #660066\">create<\/span><span style=\"color: #009900\">(<\/span>newUser<span style=\"color: #339933\">,<\/span> <span style=\"color: #003366;font-weight: bold\">\ud568\uc218<\/span><span style=\"color: #009900\">(<\/span>err<span style=\"color: #339933\">,<\/span> \uc0ac\uc6a9\uc790<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ub9cc\uc57d<\/span> <span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span> <span style=\"color: #009900\">{<\/span><br \/>\n<span style=\"color: #000066;font-weight: bold\">\ubc18\ud658<\/span> \ub2e4\uc74c<span style=\"color: #009900\">(<\/span>err<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><\/p>\n<p><span style=\"color: #000066;font-weight: bold\">\uc0ad\uc81c<\/span> \uc0ac\uc6a9\uc790.<span style=\"color: #660066\">\ube44\ubc00\ubc88\ud638<\/span><span style=\"color: #339933\">;<\/span><br \/>\nres.<span style=\"color: #660066\">\ubcf4\ub0b4\uae30<\/span><span style=\"color: #009900\">(<\/span>\uc0ac\uc6a9\uc790<span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><br \/>\n<span style=\"color: #009900\">}<\/span><span style=\"color: #009900\">)<\/span><span style=\"color: #339933\">;<\/span><\/p>\n<\/div>\n<\/div>\n<h1>\ud53c\ub0a0\ub808<\/h1>\n<p>\ub4dc\ub514\uc5b4 \ud29c\ud1a0\ub9ac\uc5bc 1\ubd80\uac00 \ub05d\ub0ac\uc2b5\ub2c8\ub2e4. \uae30\ucd08\uc801\uc778 \ub0b4\uc6a9\uc744 \ub9ce\uc774 \ub2e4\ub8e8\uc5c8\uc73c\ubbc0\ub85c \uc55e\uc73c\ub85c\uc758 \ud30c\ud2b8\ub294 \uc870\uae08 \ub354 \uc9e7\uc544\uc9c8 \uac83\uc785\ub2c8\ub2e4(\uadf8\ub807\ub2e4\uace0 \uc57d\uc18d\ud560 \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4!). \uc774 \uc2dc\uc810\uc5d0\uc11c \/users \uc5d4\ub4dc\ud3ec\uc778\ud2b8\uc5d0 POST \uc694\uccad\uc744 \uc2e4\ud589\ud558\uace0 \ub2e4\uc74c\uacfc \uac19\uc774 \uc0c8 \uc0ac\uc6a9\uc790\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<div class=\"geshifilter\">\n<div class=\"text geshifilter-text\" style=\"font-family: monospace\"><\/div>\n<div class=\"text geshifilter-text\" style=\"font-family: monospace\">&gt; POST \/\uc0ac\uc6a9\uc790<br \/>\n{<br \/>\n\"\uc774\ub984\": \"\ube0c\ub81b \ub85c\uc2a8\",<br \/>\n\"username\": \"brett19\",<br \/>\n\"\ube44\ubc00\ubc88\ud638\": \"\uc131\uacf5!\"<br \/>\n}<br \/>\n&lt; 200 \ubbf8\ub9cc \ud655\uc778<br \/>\n{<br \/>\n\"uid\": \u201cb836d211-425c-47de-9faf-5d0adc078edc\u201d,<br \/>\n\"\uc774\ub984\": \"\ube0c\ub81b \ub85c\uc2a8\",<br \/>\n\"username\": \"brett19\"<br \/>\n}<\/div>\n<\/div>\n<p>\uc548\ud0c0\uae5d\uac8c\ub3c4 \ud604\uc7ac\ub85c\uc11c\ub294 \uc0c8\ub85c \ucc3e\uc740 \uacc4\uc815\uc73c\ub85c \ud560 \uc218 \uc788\ub294 \uc77c\uc774 \ub9ce\uc9c0 \uc54a\uc544\uc11c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uacc4\uc815\uc774 \uc788\ub2e4\ub294 \uc0ac\uc2e4\uc5d0 \uac10\ud0c4\ud558\ub294 \uac83 \uc678\uc5d0\ub294 \ud560 \uc218 \uc788\ub294 \uc77c\uc774 \ub9ce\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\uc81c \ub4f1\ub85d\ud560 \uc218 \uc788\ub294 \uc0ac\uc6a9\uc790\uc758 \uc138\uc158\uacfc \uc778\uc99d\uc5d0 \ub300\ud574 \uc18c\uac1c\ud558\ub294 2\ubd80\uc5d0\uc11c\ub294 \uacc4\uc18d \uc9c0\ucf1c\ubd10 \uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc804\uccb4 \uc18c\uc2a4\ub294 \uc5ec\uae30\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4: <a href=\"https:\/\/github.com\/brett19\/node-gameapi\">https:\/\/github.com\/brett19\/node-gameapi<\/a><\/p>\n<p>\uc990\uaca8\ubcf4\uc138\uc694! Brett<\/p>","protected":false},"excerpt":{"rendered":"<p>It seems these days that almost every game studio has been working on networked games where players can interact and co-operate with their friends and other players around the world. Considering my previous experience building such servers and that Couchbase [&hellip;]<\/p>","protected":false},"author":31,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[9004],"class_list":["post-1614","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Game Servers and Couchbase with Node.js - Part 1<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/game-servers-and-couchbase-nodejs-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Game Servers and Couchbase with Node.js - Part 1\" \/>\n<meta property=\"og:description\" content=\"It seems these days that almost every game studio has been working on networked games where players can interact and co-operate with their friends and other players around the world. Considering my previous experience building such servers and that Couchbase [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/game-servers-and-couchbase-nodejs-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-16T19:31:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-28T07:24:10+00:00\" \/>\n<meta name=\"author\" content=\"Brett Lawson, Principal Software Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Brett Lawson, Principal Software Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/\"},\"author\":{\"name\":\"Brett Lawson, Principal Software Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5cfc2fbf25776be2a027a474562be02f\"},\"headline\":\"Game Servers and Couchbase with Node.js &#8211; Part 1\",\"datePublished\":\"2014-12-16T19:31:59+00:00\",\"dateModified\":\"2023-06-28T07:24:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/\"},\"wordCount\":2214,\"commentCount\":16,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/\",\"name\":\"Game Servers and Couchbase with Node.js - Part 1\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-16T19:31:59+00:00\",\"dateModified\":\"2023-06-28T07:24:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Game Servers and Couchbase with Node.js &#8211; Part 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5cfc2fbf25776be2a027a474562be02f\",\"name\":\"Brett Lawson, Principal Software Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ee3586f0c112c20e863af447d44dec8f\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6aec1ba24ef7558a248dcde7b7a18b15b06e2885b24b663906a448634066c1c4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6aec1ba24ef7558a248dcde7b7a18b15b06e2885b24b663906a448634066c1c4?s=96&d=mm&r=g\",\"caption\":\"Brett Lawson, Principal Software Engineer, Couchbase\"},\"description\":\"Brett Lawson is a Principal Software Engineer at Couchbase. Brett is responsible for the design and development of the Couchbase Node.js and PHP clients as well as playing a role in the design and development of the C library, libcouchbase.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/brett-lawson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Game Servers and Couchbase with Node.js - Part 1","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/game-servers-and-couchbase-nodejs-part-1\/","og_locale":"ko_KR","og_type":"article","og_title":"Game Servers and Couchbase with Node.js - Part 1","og_description":"It seems these days that almost every game studio has been working on networked games where players can interact and co-operate with their friends and other players around the world. Considering my previous experience building such servers and that Couchbase [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/game-servers-and-couchbase-nodejs-part-1\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-16T19:31:59+00:00","article_modified_time":"2023-06-28T07:24:10+00:00","author":"Brett Lawson, Principal Software Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Brett Lawson, Principal Software Engineer, Couchbase","Est. reading time":"11\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/"},"author":{"name":"Brett Lawson, Principal Software Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5cfc2fbf25776be2a027a474562be02f"},"headline":"Game Servers and Couchbase with Node.js &#8211; Part 1","datePublished":"2014-12-16T19:31:59+00:00","dateModified":"2023-06-28T07:24:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/"},"wordCount":2214,"commentCount":16,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/","url":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/","name":"Game Servers and Couchbase with Node.js - Part 1","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-16T19:31:59+00:00","dateModified":"2023-06-28T07:24:10+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/game-servers-and-couchbase-nodejs-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Game Servers and Couchbase with Node.js &#8211; Part 1"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5cfc2fbf25776be2a027a474562be02f","name":"\ube0c\ub81b \ub85c\uc2a8, \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ee3586f0c112c20e863af447d44dec8f","url":"https:\/\/secure.gravatar.com\/avatar\/6aec1ba24ef7558a248dcde7b7a18b15b06e2885b24b663906a448634066c1c4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6aec1ba24ef7558a248dcde7b7a18b15b06e2885b24b663906a448634066c1c4?s=96&d=mm&r=g","caption":"Brett Lawson, Principal Software Engineer, Couchbase"},"description":"\ube0c\ub81b \ub85c\uc2a8\uc740 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. Brett\uc740 Couchbase Node.js \ubc0f PHP \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc124\uacc4\uc640 \uac1c\ubc1c\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc73c\uba70, C \ub77c\uc774\ube0c\ub7ec\ub9ac\uc778 libcouchbase\uc758 \uc124\uacc4\uc640 \uac1c\ubc1c\uc5d0\ub3c4 \ucc38\uc5ec\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/brett-lawson\/"}]}},"authors":[{"term_id":9004,"user_id":31,"is_guest":0,"slug":"brett-lawson","display_name":"Brett Lawson, Principal Software Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/6aec1ba24ef7558a248dcde7b7a18b15b06e2885b24b663906a448634066c1c4?s=96&d=mm&r=g","author_category":"","last_name":"Lawson","first_name":"Brett","job_title":"","user_url":"","description":"\ube0c\ub81b \ub85c\uc2a8\uc740 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uc218\uc11d \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4\uc785\ub2c8\ub2e4. Brett\uc740 Couchbase Node.js \ubc0f PHP \ud074\ub77c\uc774\uc5b8\ud2b8\uc758 \uc124\uacc4\uc640 \uac1c\ubc1c\uc744 \ub2f4\ub2f9\ud558\uace0 \uc788\uc73c\uba70, C \ub77c\uc774\ube0c\ub7ec\ub9ac\uc778 libcouchbase\uc758 \uc124\uacc4\uc640 \uac1c\ubc1c\uc5d0\ub3c4 \ucc38\uc5ec\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1614"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1614\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=1614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1614"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}