{"id":4681,"date":"2018-03-19T08:00:59","date_gmt":"2018-03-19T15:00:59","guid":{"rendered":"http:\/\/www.couchbase.com\/blog\/?p=4681"},"modified":"2025-06-13T18:45:37","modified_gmt":"2025-06-14T01:45:37","slug":"using-couchbase-analytics-node-js-javascript","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/","title":{"rendered":"Using Couchbase Analytics with Node.js and JavaScript"},"content":{"rendered":"<p><strong>Note:<\/strong> This post uses the the Couchbase Analytics Data Definition Language as of the version 5.5 preview release.\u00a0 For updates and information on breaking changes in newer versions, please refer to\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/couchbase-analytics-service-changes\/\">Changes to the Couchbase Analytics Service<\/a>.<\/p>\n<p>The Couchbase Analytics Service, sometimes referred to as CBAS, is a great thing for Couchbase and your NoSQL data needs because it allows you to create and run potentially complex queries against massive amounts of data efficiently using a familiar SQL dialect.<\/p>\n<p>We&#8217;re going to see how to use this analytics service, new as of <a href=\"https:\/\/www.couchbase.com\/blog\/announcing-couchbase-server-5-5\/\">Couchbase 5.5<\/a>, with the Node.js SDK for <a href=\"https:\/\/www.couchbase.com\" target=\"_blank\" rel=\"noopener\">Couchbase<\/a>.<\/p>\n<p><!--more--><\/p>\n<p>For this example, we&#8217;re going to be working with the\u00a0<strong>travel-sample<\/strong> example Bucket that can be optionally installed with Couchbase Server. It isn&#8217;t considered a huge dataset, but it will work with this example.<\/p>\n<h2>Configuring a Couchbase Analytics Dataset<\/h2>\n<p>Within the\u00a0<strong>Analytics<\/strong> tab of the Couchbase Administrative Dashboard, execute the following query:<\/p>\n<pre class=\"lang:default decode:true \">CREATE BUCKET travel WITH { \"name\":\"travel-sample\" };<\/pre>\n<p>The above query will create a\u00a0<strong>travel<\/strong> Analytics Bucket based of the Couchbase\u00a0<strong>travel-sample<\/strong> Bucket.<\/p>\n<p>With the bucket created, we can create a shadow dataset to work with. Execute the following queries:<\/p>\n<pre class=\"lang:default decode:true \">CREATE SHADOW DATASET airlines ON travel WHERE `type` = \"airline\";\r\nCREATE SHADOW DATASET airports ON travel WHERE `type` = \"airport\";<\/pre>\n<p>The above queries will create two shadow datasets based on data that exists in the\u00a0<strong>travel-sample<\/strong> bucket. While the shadow datasets are created, they need to be initialized:<\/p>\n<pre class=\"lang:default decode:true \">CONNECT BUCKET travel;<\/pre>\n<p>Once initialized, the Analytics service will begin making its copy of the documents and actively monitor for changes. We can test the data by executing a query like the following:<\/p>\n<pre class=\"lang:default decode:true \">SELECT * FROM airports;<\/pre>\n<p>The above query will find all documents from our shadow dataset. In other words, we&#8217;ll get all documents that have a <code>type<\/code> property of <code>airline<\/code>.<\/p>\n<p>This is all great, but as of now, we&#8217;ve only used the Couchbase Administrative Dashboard. We want to be able to run queries against our Analytics dataset from Node.js.<\/p>\n<h2>Querying CBAS from a Node.js Application<\/h2>\n<p>Assuming you have Node.js installed, create a new project directory and execute the following command:<\/p>\n<pre class=\"lang:default decode:true \">npm init -y<\/pre>\n<p>The above command will create a new\u00a0<strong>package.json<\/strong> file at your CLI path. In order to communicate with Couchbase, we&#8217;re going to need the SDK. It can be installed by executing the following from the CLI:<\/p>\n<pre class=\"lang:default decode:true \">npm install couchbase --save<\/pre>\n<p>Now we can start developing our application. Create an\u00a0<strong>app.js<\/strong> file in your project with the following:<\/p>\n<pre class=\"lang:default decode:true \">const Couchbase = require(\"couchbase\");\r\n\r\nvar cluster = new Couchbase.Cluster(\"couchbase:\/\/localhost\");\r\ncluster.authenticate(\"travel\", \"123456\");\r\ncluster.enableCbas([\"localhost:8095\"]);\r\n\r\nvar statement = \"SELECT * FROM airports\";\r\nvar query = Couchbase.CbasQuery.fromString(statement);\r\n\r\ncluster.query(query, (error, result) =&gt; {\r\n    if(error) {\r\n        throw error;\r\n    }\r\n    console.log(result);\r\n});<\/pre>\n<p>Not too much is happening in the above code, but we&#8217;ll break it down anyways.<\/p>\n<pre class=\"lang:default decode:true \">var cluster = new Couchbase.Cluster(\"couchbase:\/\/localhost\");\r\ncluster.authenticate(\"travel\", \"123456\");\r\ncluster.enableCbas([\"localhost:8095\"]);<\/pre>\n<p>Before we can start executing queries, we need to connect to the cluster and enable interactions with the Analytics service. We also need to authenticate to the cluster with a user that has permission to use Analytics. In this example, Analytics is active on the node that we&#8217;re connecting to.<\/p>\n<p>Notice that we&#8217;re not connecting to a Bucket. Had we wanted to use N1QL, we&#8217;d open a Bucket, but we&#8217;re not using N1QL even if it might look similar.<\/p>\n<pre class=\"lang:default decode:true \">var statement = \"SELECT * FROM airports\";\r\nvar query = Couchbase.CbasQuery.fromString(statement);\r\n\r\ncluster.query(query, (error, result) =&gt; {\r\n    if(error) {\r\n        throw error;\r\n    }\r\n    console.log(result);\r\n});<\/pre>\n<p>Using a simple Analytics query, we can parse it and execute it. The results of the query will be returned and printed to the logs.<\/p>\n<p>Not too bad right?<\/p>\n<p>Since Analytics uses SQL++, you can make your queries much more complicated using other operators such as <code>WHERE<\/code>, subqueries, and operations on collections.<\/p>\n<h2>Conclusion<\/h2>\n<p>You just saw how to create a simple Node.js application that uses the Couchbase Analytics Service (CBAS) rather than N1QL. Analytics and SQL++ is not a replacement to N1QL, but instead a compliment for much larger or complicated datasets, where as N1QL shines on smaller datasets.<\/p>\n<p>To learn more about Analytics or the Couchbase Node.js SDK, visit the <a href=\"https:\/\/www.couchbase.com\/developers\/\" target=\"_blank\" rel=\"noopener\">Couchbase Developer Portal<\/a>.\u00a0 Learn about other new features available in the <a href=\"https:\/\/www.couchbase.com\/blog\/announcing-couchbase-server-5-5\/\">Couchbase Server 5.5 release<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Note: This post uses the the Couchbase Analytics Data Definition Language as of the version 5.5 preview release.\u00a0 For updates and information on breaking changes in newer versions, please refer to\u00a0Changes to the Couchbase Analytics Service. The Couchbase Analytics Service, [&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":[1815,2294,1816,1822,1812],"tags":[2258,2164,1572,2182,1725],"ppma_author":[9032],"class_list":["post-4681","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-analytics","category-couchbase-server","category-node-js","category-n1ql-query","tag-5-5","tag-cbas","tag-database","tag-devbuild","tag-nosql-database"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Using Couchbase Analytics with Node.js and JavaScript<\/title>\n<meta name=\"description\" content=\"Learn how to use Couchbase Analytics with Node.js to run potentially complex queries against massive amounts of NoSQL data.\" \/>\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\/using-couchbase-analytics-node-js-javascript\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using Couchbase Analytics with Node.js and JavaScript\" \/>\n<meta property=\"og:description\" content=\"Learn how to use Couchbase Analytics with Node.js to run potentially complex queries against massive amounts of NoSQL data.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/\" \/>\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=\"2018-03-19T15:00:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T01:45:37+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\\\/using-couchbase-analytics-node-js-javascript\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Using Couchbase Analytics with Node.js and JavaScript\",\"datePublished\":\"2018-03-19T15:00:59+00:00\",\"dateModified\":\"2025-06-14T01:45:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/\"},\"wordCount\":616,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"keywords\":[\"5.5\",\"cbas\",\"database\",\"devbuild\",\"NoSQL Database\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Analytics\",\"Couchbase Server\",\"Node.js\",\"SQL++ \\\/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/\",\"name\":\"Using Couchbase Analytics with Node.js and JavaScript\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2022\\\/11\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2018-03-19T15:00:59+00:00\",\"dateModified\":\"2025-06-14T01:45:37+00:00\",\"description\":\"Learn how to use Couchbase Analytics with Node.js to run potentially complex queries against massive amounts of NoSQL data.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/using-couchbase-analytics-node-js-javascript\\\/#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\\\/using-couchbase-analytics-node-js-javascript\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using Couchbase Analytics with Node.js and JavaScript\"}]},{\"@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:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g8863514d8bed0cf6080f23db40e00354\",\"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":"Using Couchbase Analytics with Node.js and JavaScript","description":"Learn how to use Couchbase Analytics with Node.js to run potentially complex queries against massive amounts of NoSQL data.","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\/using-couchbase-analytics-node-js-javascript\/","og_locale":"en_US","og_type":"article","og_title":"Using Couchbase Analytics with Node.js and JavaScript","og_description":"Learn how to use Couchbase Analytics with Node.js to run potentially complex queries against massive amounts of NoSQL data.","og_url":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2018-03-19T15:00:59+00:00","article_modified_time":"2025-06-14T01:45:37+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\/using-couchbase-analytics-node-js-javascript\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Using Couchbase Analytics with Node.js and JavaScript","datePublished":"2018-03-19T15:00:59+00:00","dateModified":"2025-06-14T01:45:37+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/"},"wordCount":616,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["5.5","cbas","database","devbuild","NoSQL Database"],"articleSection":["Best Practices and Tutorials","Couchbase Analytics","Couchbase Server","Node.js","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/","url":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/","name":"Using Couchbase Analytics with Node.js and JavaScript","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2018-03-19T15:00:59+00:00","dateModified":"2025-06-14T01:45:37+00:00","description":"Learn how to use Couchbase Analytics with Node.js to run potentially complex queries against massive amounts of NoSQL data.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/using-couchbase-analytics-node-js-javascript\/#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\/using-couchbase-analytics-node-js-javascript\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using Couchbase Analytics with Node.js and JavaScript"}]},{"@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:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g8863514d8bed0cf6080f23db40e00354","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\/"}]}},"acf":[],"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","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4681","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=4681"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4681\/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=4681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4681"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}