{"id":2105,"date":"2016-01-03T04:52:53","date_gmt":"2016-01-03T04:52:53","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2105"},"modified":"2025-06-13T19:28:04","modified_gmt":"2025-06-14T02:28:04","slug":"hashing-passwords-stored-in-couchbase-server-with-nodejs","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","title":{"rendered":"Hashing Passwords Stored in Couchbase Server with Node.js"},"content":{"rendered":"<h2>Why You Should Hash<\/h2>\n<p>All passwords should be hashed before entering a database because you have to consider the scenario where some malicious user attempts to gain entry into your data. Passwords are sensitive pieces of information that you don&#8217;t want people to see.<\/p>\n<p>Now let&#8217;s not confuse encryption with hashing. Encrypting something assumes it can later be decrypted. Although this is better than leaving as plain text, what we really want is something that cannot be decrypted. This is what hashing offers us.<\/p>\n<h2>Hashing with Bcrypt<\/h2>\n<p>For this example we&#8217;re going to use the more popular <a href=\"https:\/\/www.npmjs.com\/package\/bcryptjs\">bcryptjs<\/a> library for Node.js. However, the rules it follows the same rules as other standard Bcrypt libraries. You pass in a string to be hashed and usually a salt as well.<\/p>\n<p>For the example of <strong>bcryptjs<\/strong> you would do something like this, per the documentation:<\/p>\n<pre><code class=\"language-javascript\">\r\nvar bcrypt = require(\"bcryptjs\");\r\nvar salt = bcrypt.genSaltSync(10);\r\nvar hash = bcrypt.hashSync(\"my-password\", salt);\r\n<\/code><\/pre>\n<p>The hash produced from that would not be human readable and thus safe to store within a database. But how do you compare the passwords in the scenario where you need to implement a user login?<\/p>\n<h2>Validating Against Saved Passwords<\/h2>\n<p>Bcrypt libraries always have a function for comparing a plain text password against a hash. This is how you would validate a password in the scenario of user login.<\/p>\n<pre><code class=\"language-javascript\">\r\nbcrypt.compareSync(\"wrong-password\", hash);\r\nbcrypt.compareSync(\"my-password\", hash);\r\n<\/code><\/pre>\n<p>The above two lines were pretty much taken from the documentation. In the first line, the comparison will fail and return false back to the user. In this event you know the values are wrong without even knowing what the hashed password really is. In the event of the second line, the passwords match and you&#8217;ll get a true response back.<\/p>\n<h2>A Working Example<\/h2>\n<p>Let&#8217;s make a working example from what we&#8217;ve learned above. Create a new directory somewhere and in it create a new <strong>package.json<\/strong> file with the following JSON:<\/p>\n<pre><code class=\"language-json\">\r\n{\r\n    \"name\": \"password-hashing-example\",\r\n    \"version\": \"1.0.0\",\r\n    \"description\": \"An example of using the Node.js SDK for Couchbase and Bcrypt to hash passwords\",\r\n    \"author\": \"Couchbase, Inc.\",\r\n    \"license\": \"MIT\",\r\n    \"dependencies\": {\r\n        \"bcryptjs\": \"^2.3.0\",\r\n        \"couchbase\": \"^2.0.8\",\r\n        \"uuid\": \"^2.0.1\"\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>The important parts are the dependencies. We&#8217;re including <strong>bcryptjs<\/strong> for hashing, <strong>couchbase<\/strong> for communication to Couchbase via our application, and <strong>uuid<\/strong> for generating unique document keys.<\/p>\n<p>Now we need to create a new file called <strong>config.json<\/strong> in our project directory and include the following JSON:<\/p>\n<pre><code class=\"language-json\">\r\n{\r\n    \"couchbase\": {\r\n        \"server\": \"127.0.0.1:8091\",\r\n        \"bucket\": \"restful-sample\"\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>You should swap out the server and bucket with whatever you plan to use.<\/p>\n<p>Now for the fun stuff! Create a file called <strong>app.js<\/strong> as this is where all our code is going to go. Keep in mind that this is an example, so functionality will be limited. Add the following JavaScript code to the <strong>app.js<\/strong> file:<\/p>\n<pre><code class=\"language-javascript\">\r\nvar couchbase = require(\"couchbase\");\r\nvar bcrypt = require(\"bcryptjs\");\r\nvar uuid = require(\"uuid\");\r\nvar config = require(\".\/config\");\r\n\r\nvar bucket = (new couchbase.Cluster(config.couchbase.server)).openBucket(config.couchbase.bucket);\r\n\r\nvar jsonData = {\r\n    id: uuid.v4(),\r\n    username: \"nraboy\",\r\n    password: bcrypt.hashSync(\"my-password\", 10)\r\n}\r\n\r\nbucket.insert(\"user::\" + jsonData.id, jsonData, function(error, result) {\r\n    bucket.get(\"user::\" + jsonData.id, function(error, result) {\r\n        console.log(\"Password Match -&gt; \" + bcrypt.compareSync(\"wrong-password\", result.value.password));\r\n        console.log(\"Password Match -&gt; \" + bcrypt.compareSync(\"my-password\", result.value.password));\r\n    });\r\n});\r\n<\/code><\/pre>\n<p>We&#8217;re essentially just creating a JSON document with a hashed password and inserting it into Couchbase Server. After inserting is complete, we get the document and compare passwords.<\/p>\n<h2>Conclusion<\/h2>\n<p>You should never store plain text passwords in your database. It doesn&#8217;t matter how secure your database is or what type of database you&#8217;re using. By using the Bcrypt hashing algorithm on your passwords you can add a tremendous amount of security for your users.<\/p>\n<p>The <a href=\"https:\/\/www.npmjs.com\/package\/bcryptjs\">bcryptjs<\/a> library for Node.js is just one of many suitable libraries that can accomplish this job.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Why You Should Hash All passwords should be hashed before entering a database because you have to consider the scenario where some malicious user attempts to gain entry into your data. Passwords are sensitive pieces of information that you don&#8217;t [&hellip;]<\/p>\n","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,1822,1813],"tags":[1560,1559],"ppma_author":[9032],"class_list":["post-2105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-node-js","category-security","tag-bcrypt","tag-hashing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hashing Passwords Stored in Couchbase Server with Node.js<\/title>\n<meta name=\"description\" content=\"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.\" \/>\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\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hashing Passwords Stored in Couchbase Server with Node.js\" \/>\n<meta property=\"og:description\" content=\"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-03T04:52:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:28:04+00:00\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Hashing Passwords Stored in Couchbase Server with Node.js\",\"datePublished\":\"2016-01-03T04:52:53+00:00\",\"dateModified\":\"2025-06-14T02:28:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\"},\"wordCount\":520,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"bcrypt\",\"hashing\"],\"articleSection\":[\"Couchbase Server\",\"Node.js\",\"Security\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\",\"name\":\"Hashing Passwords Stored in Couchbase Server with Node.js\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-01-03T04:52:53+00:00\",\"dateModified\":\"2025-06-14T02:28:04+00:00\",\"description\":\"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#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\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hashing Passwords Stored in Couchbase Server with Node.js\"}]},{\"@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\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@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\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hashing Passwords Stored in Couchbase Server with Node.js","description":"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.","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\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","og_locale":"en_US","og_type":"article","og_title":"Hashing Passwords Stored in Couchbase Server with Node.js","og_description":"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.","og_url":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2016-01-03T04:52:53+00:00","article_modified_time":"2025-06-14T02:28:04+00:00","author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Hashing Passwords Stored in Couchbase Server with Node.js","datePublished":"2016-01-03T04:52:53+00:00","dateModified":"2025-06-14T02:28:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/"},"wordCount":520,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["bcrypt","hashing"],"articleSection":["Couchbase Server","Node.js","Security"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","url":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","name":"Hashing Passwords Stored in Couchbase Server with Node.js","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-01-03T04:52:53+00:00","dateModified":"2025-06-14T02:28:04+00:00","description":"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#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\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hashing Passwords Stored in Couchbase Server with Node.js"}]},{"@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":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@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\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, Developer Advocate, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2105"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2105\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=2105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2105"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}