{"id":2299,"date":"2016-08-05T14:35:36","date_gmt":"2016-08-05T14:35:35","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2299"},"modified":"2025-06-13T18:24:16","modified_gmt":"2025-06-14T01:24:16","slug":"using-the-couchbase-sub-document-api-with-the-nodejs-sdk","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/","title":{"rendered":"Uso de la API de subdocumentos de Couchbase con el SDK de Node.js"},"content":{"rendered":"<p>Muchas preguntas surgen en el foro de Couchbase y Stack Overflow con respecto a leer y escribir s\u00f3lo partes de un documento en lugar del documento completo. Puedo ver donde esto podr\u00eda ser una preocupaci\u00f3n. Por ejemplo, \u00bfqu\u00e9 pasa si tienes documentos que son megabytes de tama\u00f1o? Transferir estos grandes documentos entre la capa de aplicaci\u00f3n y el servidor Couchbase puede llegar a ser bastante lento.<\/p>\n<p>Aqu\u00ed es donde la API de subdocumentos de Couchbase, parte de <a href=\"https:\/\/developer.couchbase.com\/server\/?utm_source=blogs&#038;utm_medium=link&#038;utm_campaign=blogs\">Servidor Couchbase<\/a> 4.5, entra en juego. En lugar de obtener un documento completo y potencialmente grande basado en una clave, puedes obtener s\u00f3lo las partes del documento que necesitas. Lo mismo puede decirse de escribir cambios de nuevo en Couchbase. Por ejemplo, \u00bfqu\u00e9 pasa si tienes un documento con datos de perfil de usuario y s\u00f3lo necesitas cambiar la direcci\u00f3n? \u00bfNo tendr\u00eda m\u00e1s sentido escribir s\u00f3lo ese cambio?<\/p>\n<p>Vamos a echar un vistazo al uso de la API de sub-documentos en una aplicaci\u00f3n Node.js usando el SDK de Node.js para Couchbase. Antes de empezar, vamos a inventarnos una historia. Digamos que tenemos un perfil de usuario con datos de redes sociales. Vamos a basar nuestras manipulaciones s\u00f3lo en los datos de las redes sociales, no en el resto del documento. As\u00ed, por ejemplo:<\/p>\n<pre>\n<code>\n{\n    firstName: \"Nic\",\n    lastName: \"Raboy\",\n    socialNetworking: {\n        twitter: \"nraboy\"\n    }\n}\n<\/code>\n<\/pre>\n<p>El documento JSON anterior ser\u00e1 el documento base con el que trabajaremos.<\/p>\n<p>Para mantener las cosas f\u00e1ciles de entender, vamos a crear un nuevo proyecto Node.js con el que trabajar. Construiremos sobre este nuevo proyecto para mayor claridad. Asumiendo que Node.js est\u00e1 instalado y que tienes Couchbase Server 4.5+ corriendo en alg\u00fan lado, ejecuta lo siguiente desde tu Command Prompt o Terminal:<\/p>\n<pre>\n<code>\nnpm init -y\nnpm install couchbase --save\n<\/code>\n<\/pre>\n<p>Probablemente deber\u00edas crear un nuevo directorio antes de ejecutar los comandos anteriores, pero esencialmente crear\u00e1n un nuevo proyecto Node.js e instalar\u00e1n el SDK Node.js de Couchbase. Crea un <strong>app.js<\/strong> en el mismo directorio que albergar\u00e1 nuestra l\u00f3gica.<\/p>\n<p>En el futuro vamos a dedicar nuestro tiempo a la <strong>app.js<\/strong> archivo. \u00c1brelo y vamos a a\u00f1adir el c\u00f3digo de arranque b\u00e1sico para conectar con Couchbase.<\/p>\n<pre>\n<code>\nvar Couchbase = require(\"couchbase\");\n\nvar cluster = new Couchbase.Cluster(\"couchbase:\/\/localhost\");\nvar bucket = cluster.openBucket(\"default\");\n<\/code>\n<\/pre>\n<p>En el ejemplo anterior, nos estamos conectando a una instancia de Couchbase que se ejecuta localmente y estamos abriendo el archivo <strong>por defecto<\/strong> cubo. Si\u00e9ntase libre de cambiar esto como sea apropiado. Ahora vamos a proceder a crear las siguientes cuatro funciones JavaScript:<\/p>\n<pre>\n<code>\nvar createDocument = function(documentId, document) { }\nvar getSubDocument = function(documentId) { }\nvar upsertSubDocument = function(documentId) { }\nvar getDocument = function(documentId, isFinished) { }\n<\/code>\n<\/pre>\n<p>Estamos creando cuatro funciones para evitar una gigantesca cadena anidada de callbacks de funciones as\u00edncronas. Dado que nuestro proyecto ser\u00e1 dise\u00f1ado m\u00e1s como un script, una cadena puede ser un poco dif\u00edcil de seguir.<\/p>\n<p>Vayamos por orden con cada una de estas funciones. Empezando por la funci\u00f3n <strong>crearDocumento<\/strong> ser\u00e1 algo parecido a esto:<\/p>\n<p>\u00a0<\/p>\n<pre>\n<code>\nvar createDocument = function(documentId, document) {\n    bucket.upsert(documentId, document, (error, result) => {\n        if(error) {\n            return console.log(\"ERROR: \", error);\n        }\n        getSubDocument(documentId);\n    });\n}\n<\/code>\n<\/pre>\n<p>\u00a0<\/p>\n<p>La funci\u00f3n anterior asume que estamos pasando una clave de documento y un documento JSON. No te preocupes, lo veremos al final. Lo que ocurre es que estamos haciendo un <strong>upsert<\/strong> para crear un nuevo documento completo. Nosotros&apos;re esencialmente utilizando esta funci\u00f3n como nuestra funci\u00f3n de inicializaci\u00f3n para este ejemplo. Cuando se crea el documento de perfil completo, llamar\u00e1 a la siguiente funci\u00f3n cuando tenga \u00e9xito. Esta siguiente funci\u00f3n es la <strong>getSubDocument<\/strong> y tiene el siguiente aspecto:<\/p>\n<pre>\n<code>\nvar getSubDocument = function(documentId) {\n    bucket.lookupIn(documentId).get(\"socialNetworking\").execute((error, result) => {\n        if(error) {\n            throw error;\n        }\n        upsertSubDocument(documentId);\n    });\n}\n<\/code>\n<\/pre>\n<p>La funci\u00f3n anterior tomar\u00e1 la clave de documento inicial que definamos y declarar\u00e1 que vamos a hacer una b\u00fasqueda en lugar de obtener un documento. Al hacer la b\u00fasqueda, buscamos el elemento <strong>redes sociales<\/strong> entonces ejecutamos esta b\u00fasqueda. Podemos obtener m\u00e1s de una propiedad si queremos, porque el resultado de la ejecuci\u00f3n devolver\u00e1 un array de propiedades. Por ejemplo, el array del contenido del resultado anterior tendr\u00eda este aspecto:<\/p>\n<pre>\n<code>\n[ { id: 0, value: { twitter: &apos;nraboy&apos; }, path: &apos;socialNetworking&apos; } ]\n<\/code>\n<\/pre>\n<p>Despu\u00e9s del <strong>getSubDocument<\/strong> se completa con \u00e9xito, llama a la funci\u00f3n <strong>upsertSubDocument<\/strong> que nos permite cambiar una parte del documento sin obtener primero el documento completo, o incluso parte de \u00e9l.<\/p>\n<pre>\n<code>\nvar upsertSubDocument = function(documentId) {\n    bucket.mutateIn(documentId, 0, 0).upsert(\"socialNetworking.website\", \"thepolyglotdeveloper.com\", true).execute((error, result) => {\n        if(error) {\n            throw error;\n        }\n        getDocument(documentId);\n    });\n}\n<\/code>\n<\/pre>\n<p>Seamos claros. Cuando utilizamos el <strong>mutateIn<\/strong> anterior, no estamos obteniendo primero el documento. Act\u00faa como el lookup que hicimos antes. Le estamos diciendo a Couchbase qu\u00e9 documento planeamos cambiar bas\u00e1ndonos en la clave, y luego estamos insertando una propiedad en particular. En el ejemplo anterior, estamos intentando crear una nueva propiedad llamada <strong>sitio web<\/strong>. Es una propiedad anidada por lo que estamos pasando la ruta completa junto con el valor de dicha propiedad. Entonces podemos ejecutar la petici\u00f3n.<\/p>\n<p>Por \u00faltimo, queremos ver el documento completo que nos queda. Suponiendo que la mutaci\u00f3n haya tenido \u00e9xito, el <strong>getDocument<\/strong> ser\u00e1 llamada. Tendr\u00e1 el siguiente aspecto:<\/p>\n<pre>\n<code>\nvar getDocument = function(documentId) {\n    bucket.get(documentId, (error, result) => {\n        if(error) {\n            throw error;\n        }\n        console.log(result);\n    });\n}\n<\/code>\n<\/pre>\n<p>En la funci\u00f3n anterior s\u00f3lo estamos haciendo un est\u00e1ndar <strong>consiga<\/strong> por clave de documento. Para terminar, probablemente sea una buena idea compartir el trozo de c\u00f3digo que llam\u00f3 a nuestra primera funci\u00f3n. Se puede ver de la siguiente manera:<\/p>\n<pre>\n<code>\ncreateDocument(\"nraboy\", {\n    firstName: \"Nic\",\n    lastName: \"Raboy\",\n    socialNetworking: {\n        twitter: \"nraboy\"\n    }\n});\n<\/code>\n<\/pre>\n<h2>Conclusi\u00f3n<\/h2>\n<p>La API de sub-documento de Couchbase es incre\u00edblemente beneficiosa cuando se trabaja con documentos m\u00e1s grandes. No s\u00f3lo puedes obtener trozos de un documento para reducir el tama\u00f1o de transferencia, sino que tambi\u00e9n puedes escribir trozos. He compartido s\u00f3lo algo de lo que puedes hacer con la API para Node.js. Para ver otro ejemplo, visite <a href=\"https:\/\/github.com\/couchbaselabs\/devguide-examples\/blob\/master\/nodejs\/subdoc.js\">este<\/a> en GitHub. Se pueden ver m\u00e1s comandos en el SDK de Node.js <a href=\"https:\/\/docs.couchbase.com\/sdk-api\/couchbase-node-client-2.1.4\/MutateInBuilder.html#toc0\">documentaci\u00f3n<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Many questions pop up in the Couchbase forum and Stack Overflow regarding reading and writing only parts of a document rather than the full document. I can see where this would be a concern. For example, what if you have [&hellip;]<\/p>","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,1812],"tags":[1586],"ppma_author":[9032],"class_list":["post-2299","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-node-js","category-n1ql-query","tag-subdocument"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.4 (Yoast SEO v26.4) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using the Couchbase Sub-Document API with the Node.js SDK - The Couchbase Blog<\/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\/es\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using the Couchbase Sub-Document API with the Node.js SDK\" \/>\n<meta property=\"og:description\" content=\"Many questions pop up in the Couchbase forum and Stack Overflow regarding reading and writing only parts of a document rather than the full document. I can see where this would be a concern. For example, what if you have [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/\" \/>\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-08-05T14:35:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T01:24:16+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=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Using the Couchbase Sub-Document API with the Node.js SDK\",\"datePublished\":\"2016-08-05T14:35:35+00:00\",\"dateModified\":\"2025-06-14T01:24:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/\"},\"wordCount\":883,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"subdocument\"],\"articleSection\":[\"Couchbase Server\",\"Node.js\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/\",\"name\":\"Using the Couchbase Sub-Document API with the Node.js SDK - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-08-05T14:35:35+00:00\",\"dateModified\":\"2025-06-14T01:24:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#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-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using the Couchbase Sub-Document API with the Node.js SDK\"}]},{\"@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\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/es\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using the Couchbase Sub-Document API with the Node.js SDK - The Couchbase Blog","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\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/","og_locale":"es_MX","og_type":"article","og_title":"Using the Couchbase Sub-Document API with the Node.js SDK","og_description":"Many questions pop up in the Couchbase forum and Stack Overflow regarding reading and writing only parts of a document rather than the full document. I can see where this would be a concern. For example, what if you have [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2016-08-05T14:35:35+00:00","article_modified_time":"2025-06-14T01:24:16+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":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Using the Couchbase Sub-Document API with the Node.js SDK","datePublished":"2016-08-05T14:35:35+00:00","dateModified":"2025-06-14T01:24:16+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/"},"wordCount":883,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["subdocument"],"articleSection":["Couchbase Server","Node.js","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/","url":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/","name":"Using the Couchbase Sub-Document API with the Node.js SDK - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-08-05T14:35:35+00:00","dateModified":"2025-06-14T01:24:16+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/using-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#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-the-couchbase-sub-document-api-with-the-nodejs-sdk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using the Couchbase Sub-Document API with the Node.js SDK"}]},{"@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\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, Defensor del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@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 es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/es\/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 es un defensor de las tecnolog\u00edas modernas de desarrollo web y m\u00f3vil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y m\u00f3vil m\u00e1s f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2299","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\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2299"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2299\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2299"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}