{"id":11798,"date":"2021-09-15T00:00:07","date_gmt":"2021-09-15T07:00:07","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=11798"},"modified":"2025-06-13T21:22:56","modified_gmt":"2025-06-14T04:22:56","slug":"how-to-query-json-data-n1ql-node-js-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/","title":{"rendered":"C\u00f3mo consultar datos JSON con SQL++ para Node.js y Couchbase"},"content":{"rendered":"<p><strong>Hoy es el d\u00eda<\/strong> tu aplicaci\u00f3n Node.js aprende \"go fetch\".<\/p>\n<p>Siguiendo este tutorial b\u00e1sico, aprender\u00e1s a construir una API REST para tu aplicaci\u00f3n Node.js que env\u00ede consultas SQL++ (tambi\u00e9n conocidas como N1QL) para recuperar datos de Couchbase.<\/p>\n<p>Este post contin\u00faa mi serie introductoria sobre <a href=\"https:\/\/www.couchbase.com\/blog\/es\/get-started-nodejs-sdk-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">usando Node.js con Couchbase<\/a>incluyendo <a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-create-nodejs-async-get-upsert-calls-with-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">funciones as\u00edncronas<\/a> y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/build-a-rest-api-with-node-js-express-and-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Creaci\u00f3n de una API REST con Node.js y Express<\/a>.<\/p>\n<p>El post de hoy contin\u00faa donde lo dejaron los anteriores tras construir una API REST para la recuperaci\u00f3n directa de documentos.<\/p>\n<h2>Configuraci\u00f3n de la base de datos Couchbase<\/h2>\n<p>This post assumes you have installed the `travel-sample` Bucket that comes with all <a href=\"https:\/\/developer.couchbase.com\/new-to-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Couchbase<\/a> instalaciones. Es importante que tenga instalado este conjunto de datos porque utilizaremos \u00edndices que se crean autom\u00e1ticamente y se utilizar\u00e1n criterios espec\u00edficos de documentos que son totalmente repetibles.<\/p>\n<p>La conectividad b\u00e1sica y los cimientos de la API REST ya est\u00e1n establecidos en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/build-a-rest-api-with-node-js-express-and-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">el gui\u00f3n que creamos juntos la semana pasada<\/a>. Lo incluir\u00e9 en el ejemplo de c\u00f3digo de hoy, pero tendr\u00e1s que leer todas las entradas anteriores (enlazadas m\u00e1s arriba) para obtener una explicaci\u00f3n completa.<\/p>\n<p>Adem\u00e1s, en aras de la simplicidad en el ejemplo de hoy, usaremos los Scopes y Collections por defecto. Como de costumbre, cuando se trata de Query JSON data, tambi\u00e9n asumir\u00e9 que tienes una familiaridad b\u00e1sica con JavaScript, Node.js y bases de datos de documentos NoSQL.<\/p>\n<h2>Entender las consultas N1QL<\/h2>\n<p>En <a href=\"https:\/\/query-tutorial.couchbase.com\/tutorial\/?ref=blog\/#1\" target=\"_blank\" rel=\"noopener\">Lenguaje de consulta N1QL<\/a> para Couchbase es casi exactamente como SQL, con unas pocas excepciones.<\/p>\n<p>When a N1QL query requests a specific column from a Bucket, it returns a list of all matching JSON documents in the Bucket. If there is no data in the document for the column then you get a `NULL` value, unless it is filtered out with a `WHERE` clause.<\/p>\n<p>Como m\u00ednimo, debe existir un \u00edndice primario en los documentos para que \u00e9stos puedan consultarse. Sin embargo, el rendimiento de las consultas mejora cuando existe un \u00edndice secundario definido para una columna determinada.<\/p>\n<p>Ambos \u00edndices pueden crearse con una consulta propiamente dicha y pueden hacerse mediante un script o a trav\u00e9s de la funci\u00f3n <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-ui\/manage-ui.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Consola web de Couchbase<\/a>. De hecho, puedes conocer estos \u00edndices y ver la consulta utilizada para crearlos explor\u00e1ndolos en la consola web.<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/08\/couchbase-json-query-rest-api-nodejs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium_large wp-image-11799\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/08\/couchbase-json-query-rest-api-nodejs-768x269.png\" alt=\"Couchbase web console showing query index being created\" width=\"768\" height=\"269\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-json-query-rest-api-nodejs-768x269.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-json-query-rest-api-nodejs-300x105.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-json-query-rest-api-nodejs-1024x359.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-json-query-rest-api-nodejs-800x280.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-json-query-rest-api-nodejs-20x7.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-json-query-rest-api-nodejs.png 1250w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>En el ejemplo anterior, se ha creado un \u00edndice en la columna denominada <code>ciudad<\/code> dentro de cualquier documento que se encuentre en el <code>viaje-muestra<\/code> Cubo.<\/p>\n<h2>Ejemplo de consulta<\/h2>\n<p>Antes de sumergirte en el c\u00f3digo, puedes ejecutar consultas directamente en la consola web para asegurarte de que devuelven lo que esperas. Cambie a la funci\u00f3n <code>Consulta<\/code> e introduzca la siguiente consulta, despu\u00e9s pulse <code>Ejecute<\/code>.<\/p>\n<pre>SELECT * FROM `travel-sample` WHERE city = 'Los Angeles';\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Los resultados muestran en la consola que 323 documentos coinciden. Observe que se devuelve una mezcla de documentos: hoteles, aeropuertos, etc., como se muestra en el gr\u00e1fico <code>tipo<\/code> columna. (Ahora, estoy diciendo \"columnas\" pero por supuesto estos son en realidad objetos\/elementos JSON que podr\u00edan estar incrustados dentro de otros objetos).<\/p>\n<p>Modifique su consulta para que s\u00f3lo devuelva unas pocas columnas, como en el ejemplo siguiente.<\/p>\n<pre>SELECT type, name, city FROM `travel-sample` WHERE city = 'Los Angeles';\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/08\/couchbase-n1ql-query-hotels-city.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium_large wp-image-11800\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/08\/couchbase-n1ql-query-hotels-city-768x730.png\" alt=\"Couchbase N1QL Query of Travel-sample database\" width=\"768\" height=\"730\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-query-hotels-city-768x730.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-query-hotels-city-300x285.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-query-hotels-city-20x20.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-query-hotels-city.png 796w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>Creaci\u00f3n de una funci\u00f3n de consulta<\/h2>\n<p>Antes de sumergirnos en el resto del c\u00f3digo, empezaremos por ver lo b\u00e1sico de pasar <a href=\"https:\/\/docs.couchbase.com\/nodejs-sdk\/current\/howtos\/n1ql-queries-with-sdk.html?ref=blog\" target=\"_blank\" rel=\"noopener\">consultas utilizando el SDK de Node.js<\/a>.<\/p>\n<p>En lugar de pasar una cadena de consulta completamente formada, querr\u00e1s utilizar los marcadores de posici\u00f3n incorporados para que sea c\u00f3digo reutilizable. En este caso, utiliza par\u00e1metros con nombre: Su consulta tendr\u00e1 una variable de marcador de posici\u00f3n, y usted pasar\u00e1 una variable con los valores a utilizar.<\/p>\n<p>En primer lugar, cree la variable de consulta:<\/p>\n<pre>const querystr = `SELECT type, name, city FROM \\`travel-sample\\` WHERE city = $CITY;`\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>A continuaci\u00f3n, cree la variable de par\u00e1metros de entrada:<\/p>\n<pre>const params = { parameters: { CITY: 'Los Angeles' }}\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>A continuaci\u00f3n, pasa ambos datos a la funci\u00f3n de consulta del cl\u00faster para que inicie y devuelva los resultados:<\/p>\n<pre>  let result = await cluster.query(querystr, params)\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>La funci\u00f3n completa que crea ahora es posible:<\/p>\n<pre>  async function getQuery(){\r\n    const querystr = `SELECT type, name, city FROM \\`travel-sample\\` WHERE city = $CITY;`\r\n    const params = { parameters: { CITY: 'Los Angeles' }}\r\n\r\n    try {\r\n      let result = await cluster.query(querystr, params)\r\n      console.log(\"Result:\", result)\r\n      return result\r\n    } catch (error) {\r\n      console.error(\"Query failed: \", error)\r\n    }\r\n  };\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>REST-ificar su consulta<\/h2>\n<p>El siguiente paso es a\u00f1adir esta funci\u00f3n de consulta a nuestro anterior ejemplo de c\u00f3digo de la API REST para poder introducir el nombre de una ciudad y devolver los resultados HTTP al navegador.<\/p>\n<p>En primer lugar, haga que la funci\u00f3n pase una variable para el nombre de la ciudad, como se indica a continuaci\u00f3n:<\/p>\n<pre>  async function getQuery(cityname){...\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Then, create a query endpoint (instead of the `get` route we used in an earlier post) and move the logic for the REST response into that function.<\/p>\n<pre>  app.get('\/query\/:cityname',\r\n    runAsync(async (req, res) =&gt; {\r\n      var cityname = req.params.cityname;\r\n\r\n      var querystr = `SELECT type, name, city FROM \\`travel-sample\\` WHERE city = $CITY;`\r\n      var params = { parameters: { CITY: cityname}}\r\n\r\n      await cluster.query(querystr, params, function(err, result){\r\n        res.json(result)\r\n      })\r\n  }));\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>Esto devuelve el RAW JSON de la llamada REST, como se muestra en la imagen de abajo en el navegador web o en la herramienta Postman REST API.<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/08\/couchbase-n1ql-rest-api-json-response.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium_large wp-image-11801\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/08\/couchbase-n1ql-rest-api-json-response-768x792.png\" alt=\"couchbase N1QL query response from a REST API with node.js\" width=\"768\" height=\"792\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-rest-api-json-response-768x792.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-rest-api-json-response-291x300.png 291w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-rest-api-json-response-994x1024.png 994w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-rest-api-json-response-300x309.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-rest-api-json-response-20x20.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/couchbase-n1ql-rest-api-json-response.png 1045w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>Ejemplo de c\u00f3digo completo<\/h2>\n<p>Aqu\u00ed est\u00e1 el resultado completo del c\u00f3digo de ejemplo. Tenga en cuenta que algunos c\u00f3digos anteriores de otros art\u00edculos se mantienen para su referencia.<\/p>\n<pre>var app = require('express')();\r\nvar couchbase = require(\"couchbase\");\r\n\r\nasync function main(){\r\n  app.get('\/get\/:docid',\r\n    runAsync(async (req, res) =&gt; {\r\n      var docid = req.params.docid;\r\n      var docjson = await getDoc(docid, function(err, result){\r\n        res.json(result.content)\r\n      });\r\n  }));\r\n\r\n  app.get('\/query\/:cityname',\r\n    runAsync(async (req, res) =&gt; {\r\n      var cityname = req.params.cityname;\r\n      var querystr = `SELECT type, name, city FROM \\`travel-sample\\` WHERE city = $CITY;`\r\n      var params = { parameters: { CITY: cityname}}\r\n      await cluster.query(querystr, params, function(err, result){\r\n        res.json(result)\r\n      })\r\n  }));\r\n\r\n  app.listen(3000, () =&gt; console.log('Listening on port 3000'));\r\n\r\n  function runAsync (callback) {\r\n    return function (req, res, next) {\r\n      callback(req, res, next)\r\n      .catch(next)\r\n    }\r\n  }\r\n\r\n  var cluster = new couchbase.Cluster(\"couchbase:\/\/localhost\", {\r\n    username: \"Administrator\",\r\n    password: \"Administrator\"\r\n  });\r\n\r\n  var bucket = cluster.bucket(\"travel-sample\");\r\n  var collection = bucket.defaultCollection();\r\n\r\n  var getDoc = async (key) =&gt; {\r\n      var result = await collection.get(key);\r\n      console.log(result)\r\n      return result\r\n  }\r\n}\r\n\r\nmain();\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Hay un mont\u00f3n de nuevas direcciones que puede tomar este proyecto. Para empezar, es posible que desee incluir la captura de errores adecuada, informaci\u00f3n de registro de salida a la consola, o el uso de la <code>resultados.filas<\/code> para crear resultados tabulares.<\/p>\n<p>Le animo a <a href=\"https:\/\/docs.couchbase.com\/nodejs-sdk\/current\/howtos\/n1ql-queries-with-sdk.html?ref=blog\" target=\"_blank\" rel=\"noopener\">profundizar en la documentaci\u00f3n de Couchbase sobre el uso de consultas del SDK de Node.js<\/a>.<\/p>\n<p><em>P\u00f3ngase al d\u00eda con el resto de la serie Node.js + Couchbase how-to:<\/em><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/get-started-nodejs-sdk-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">C\u00f3mo empezar con el SDK de Node.js para Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-create-nodejs-async-get-upsert-calls-with-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">C\u00f3mo crear llamadas as\u00edncronas Get\/Upsert con Node.js y Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/build-a-rest-api-with-node-js-express-and-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Construir una aplicaci\u00f3n basada en REST con Node.js, Express y Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/?ref=blog\" target=\"_blank\" rel=\"noopener\">C\u00f3mo consultar datos JSON con SQL++ para Node.js y Couchbase<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-full-text-search-javascript-app\/?ref=blog\" target=\"_blank\" rel=\"noopener\">C\u00f3mo a\u00f1adir la funci\u00f3n de b\u00fasqueda de texto completo a su aplicaci\u00f3n JavaScript<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 30px\" aria-hidden=\"true\"><\/div>\n<div style=\"text-align: center\"><strong>\u00bfListo para arremangarse y hacerlo usted mismo?<br \/><a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/?ref=blog\" target=\"_blank\" rel=\"noopener\">Pruebe Couchbase hoy mismo<\/a><\/strong><\/div>\n<div class=\"wp-block-spacer\" style=\"height: 15px\" aria-hidden=\"true\"><\/div>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Today&#8217;s the day your Node.js app learns &#8220;go fetch.&#8221; By following this basic tutorial, you&#8217;ll learn how to build a REST API for your Node.js app that sends SQL++ (aka N1QL) queries to retrieve data from Couchbase. This post continues [&hellip;]<\/p>","protected":false},"author":75185,"featured_media":11926,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1815,9417,9381,9327,1822,1812,2201],"tags":[1798,1543,1261,1725,1950],"ppma_author":[9163],"class_list":["post-11798","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-best-practices-and-tutorials","category-performance","category-indexing","category-javascript","category-node-js","category-n1ql-query","category-tools-sdks","tag-couchbase-web-console","tag-javascript","tag-json","tag-nosql-database","tag-rest-api"],"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>Query JSON Data Using SQL++ for Node.js with JavaScript<\/title>\n<meta name=\"description\" content=\"Use this basic tutorial to learn how to build a REST API for your Node.js app that sends SQL++ (aka N1QL) queries to retrieve data from Couchbase.\" \/>\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\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Query JSON Data Using SQL++ for Node.js and Couchbase\" \/>\n<meta property=\"og:description\" content=\"Use this basic tutorial to learn how to build a REST API for your Node.js app that sends SQL++ (aka N1QL) queries to retrieve data from Couchbase.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-15T07:00:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:22:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase-social.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"418\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tyler Mitchell - Senior Product Marketing Manager\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase-social.png\" \/>\n<meta name=\"twitter:creator\" content=\"@1tylermitchell\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tyler Mitchell - Senior Product Marketing Manager\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/\"},\"author\":{\"name\":\"Tyler Mitchell - Senior Product Marketing Manager\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/684cc0e5c60cd2e4b591db9621494ed0\"},\"headline\":\"How to Query JSON Data Using SQL++ for Node.js and Couchbase\",\"datePublished\":\"2021-09-15T07:00:07+00:00\",\"dateModified\":\"2025-06-14T04:22:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/\"},\"wordCount\":884,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase.png\",\"keywords\":[\"Couchbase Web Console\",\"javascript\",\"JSON\",\"NoSQL Database\",\"REST API\"],\"articleSection\":[\"Application Design\",\"Best Practices and Tutorials\",\"High Performance\",\"Indexing\",\"JavaScript\",\"Node.js\",\"SQL++ \/ N1QL Query\",\"Tools &amp; SDKs\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/\",\"name\":\"Query JSON Data Using SQL++ for Node.js with JavaScript\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase.png\",\"datePublished\":\"2021-09-15T07:00:07+00:00\",\"dateModified\":\"2025-06-14T04:22:56+00:00\",\"description\":\"Use this basic tutorial to learn how to build a REST API for your Node.js app that sends SQL++ (aka N1QL) queries to retrieve data from Couchbase.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase.png\",\"width\":1200,\"height\":628,\"caption\":\"Learn how to query JSON documents using N1QL and a REST API for Node.js and Couchbase database\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Query JSON Data Using SQL++ for Node.js and Couchbase\"}]},{\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/684cc0e5c60cd2e4b591db9621494ed0\",\"name\":\"Tyler Mitchell - Senior Product Marketing Manager\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d8a7c532bf2b94b7a2fe7a8439aafd75\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g\",\"caption\":\"Tyler Mitchell - Senior Product Marketing Manager\"},\"description\":\"Works as Senior Product Marketing Manager at Couchbase, helping bring knowledge about products into the public limelight while also supporting our field teams with valuable content. His personal passion is all things geospatial, having worked in GIS for half his career. Now AI and Vector Search is top of mind.\",\"sameAs\":[\"https:\/\/linkedin.com\/in\/tylermitchell\",\"https:\/\/x.com\/1tylermitchell\",\"https:\/\/www.youtube.com\/channel\/UCBZFuoiTcg0f3lGSQwLjeTg\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/tylermitchell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Query JSON Data Using SQL++ for Node.js with JavaScript","description":"Use this basic tutorial to learn how to build a REST API for your Node.js app that sends SQL++ (aka N1QL) queries to retrieve data from Couchbase.","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\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/","og_locale":"es_MX","og_type":"article","og_title":"How to Query JSON Data Using SQL++ for Node.js and Couchbase","og_description":"Use this basic tutorial to learn how to build a REST API for your Node.js app that sends SQL++ (aka N1QL) queries to retrieve data from Couchbase.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/how-to-query-json-data-n1ql-node-js-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-09-15T07:00:07+00:00","article_modified_time":"2025-06-14T04:22:56+00:00","og_image":[{"width":800,"height":418,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase-social.png","type":"image\/png"}],"author":"Tyler Mitchell - Senior Product Marketing Manager","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase-social.png","twitter_creator":"@1tylermitchell","twitter_misc":{"Written by":"Tyler Mitchell - Senior Product Marketing Manager","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/"},"author":{"name":"Tyler Mitchell - Senior Product Marketing Manager","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/684cc0e5c60cd2e4b591db9621494ed0"},"headline":"How to Query JSON Data Using SQL++ for Node.js and Couchbase","datePublished":"2021-09-15T07:00:07+00:00","dateModified":"2025-06-14T04:22:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/"},"wordCount":884,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase.png","keywords":["Couchbase Web Console","javascript","JSON","NoSQL Database","REST API"],"articleSection":["Application Design","Best Practices and Tutorials","High Performance","Indexing","JavaScript","Node.js","SQL++ \/ N1QL Query","Tools &amp; SDKs"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/","name":"Query JSON Data Using SQL++ for Node.js with JavaScript","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase.png","datePublished":"2021-09-15T07:00:07+00:00","dateModified":"2025-06-14T04:22:56+00:00","description":"Use this basic tutorial to learn how to build a REST API for your Node.js app that sends SQL++ (aka N1QL) queries to retrieve data from Couchbase.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/09\/n1ql-queries-how-to-fetch-json-data-nodejs-couchbase.png","width":1200,"height":628,"caption":"Learn how to query JSON documents using N1QL and a REST API for Node.js and Couchbase database"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/how-to-query-json-data-n1ql-node-js-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Query JSON Data Using SQL++ for Node.js and Couchbase"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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\/684cc0e5c60cd2e4b591db9621494ed0","name":"Tyler Mitchell - Director de Marketing de Producto","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d8a7c532bf2b94b7a2fe7a8439aafd75","url":"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ebec3213e756f2e1f7118fcb5722e2cd1484c9256ae34ceb8f77054b986f21ce?s=96&d=mm&r=g","caption":"Tyler Mitchell - Senior Product Marketing Manager"},"description":"Trabaja como Gerente Senior de Marketing de Producto en Couchbase, ayudando a llevar el conocimiento sobre los productos a la luz p\u00fablica, mientras que tambi\u00e9n apoya a nuestros equipos de campo con contenido valioso. Su pasi\u00f3n personal es todo lo geoespacial, habiendo trabajado en GIS durante la mitad de su carrera. Ahora la IA y la b\u00fasqueda vectorial son lo primero en lo que piensa.","sameAs":["https:\/\/linkedin.com\/in\/tylermitchell","https:\/\/x.com\/1tylermitchell","https:\/\/www.youtube.com\/channel\/UCBZFuoiTcg0f3lGSQwLjeTg"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/tylermitchell\/"}]}},"authors":[{"term_id":9163,"user_id":75185,"is_guest":0,"slug":"tylermitchell","display_name":"Tyler Mitchell - Senior Product Marketing Manager","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/876da1e4284f1832c871b3514caf7867357744b8c0a370ef6f53a79dee2f379e?s=96&d=mm&r=g","first_name":"Tyler","last_name":"Mitchell - Senior Product Marketing Manager","user_url":"","author_category":"","description":"Trabaja como Gerente Senior de Marketing de Producto en Couchbase, ayudando a llevar el conocimiento sobre los productos a la luz p\u00fablica, mientras que tambi\u00e9n apoya a nuestros equipos de campo con contenido valioso. Su pasi\u00f3n personal es todo lo geoespacial, habiendo trabajado en GIS durante la mitad de su carrera. Ahora la IA y la b\u00fasqueda vectorial son lo primero en lo que piensa."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11798","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/75185"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=11798"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11798\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/11926"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=11798"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=11798"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=11798"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=11798"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}