{"id":2511,"date":"2017-01-23T07:11:56","date_gmt":"2017-01-23T07:11:55","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2511"},"modified":"2025-06-13T21:23:18","modified_gmt":"2025-06-14T04:23:18","slug":"bluebird-promises-swagger-nodejs","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/bluebird-promises-swagger-nodejs\/","title":{"rendered":"Promesas Bluebird y Swagger en Node.js"},"content":{"rendered":"<p style=\"text-align: center\"><img decoding=\"async\" style=\"max-width: 30%\" src=\"\/wp-content\/original-assets\/2017\/january\/bluebird-promises-swagger-nodejs\/swagger-logo.png\" alt=\"Swagger Logo\" align=\"middle\" \/><\/p>\n<p>Hace poco escrib\u00ed sobre el uso de <a href=\"https:\/\/www.couchbase.com\/blog\/es\/node.js-swagger-monitor-document-changes-couchbase-mobile\/\" target=\"_blank\" rel=\"noopener noreferrer\">Node.js con Swagger<\/a> para crear un receptor sencillo para el <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/current\/guides\/sync-gateway\/index.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\" target=\"_blank\" rel=\"noopener noreferrer\">Pasarela de sincronizaci\u00f3n<\/a> alimentaci\u00f3n de cambios. En esa versi\u00f3n hice todo usando llamadas s\u00edncronas. Estoy trabajando para construir una soluci\u00f3n m\u00e1s completa, as\u00ed que decid\u00ed cambiar a usar Promises. Opt\u00e9 por utilizar el <a href=\"https:\/\/www.npmjs.com\/package\/bluebird\" target=\"_blank\" rel=\"noopener noreferrer\">Bluebird<\/a> Biblioteca de promesas. Bluebird tiene algunas caracter\u00edsticas interesantes sobre la versi\u00f3n incorporada.<\/p>\n<h2 id=\"the-problem\">El problema<\/h2>\n<p>Me encontr\u00e9 con un problema que tard\u00e9 un poco en resolver. Bluebird tiene una pr\u00e1ctica funci\u00f3n <code>devolver<\/code>. Es una forma abreviada de crear una Promise que resuelva el valor dado. Se usa as\u00ed:<\/p>\n<pre class=\"javascript\"><code>doSomething()\r\n.return(\"Unrelated value\");<\/code><\/pre>\n<p>Sin embargo, cuando us\u00e9 esto, segu\u00ed recibiendo errores:<\/p>\n<pre><code>TypeError: doSomething().return is not a function<\/code><\/pre>\n<p>Esto fue realmente desconcertante al principio, ya que las construcciones m\u00e1s complicadas funcionaban bien.<\/p>\n<h2 id=\"the-solution\">La soluci\u00f3n<\/h2>\n<p>Bluebird est\u00e1 dise\u00f1ado para reemplazar la implementaci\u00f3n est\u00e1ndar de Promises. Sin embargo, el <a href=\"https:\/\/www.npmjs.com\/package\/swagger-client\" target=\"_blank\" rel=\"noopener noreferrer\">Cliente Swagger JS<\/a> utiliza el <a href=\"https:\/\/www.npmjs.com\/package\/q\" target=\"_blank\" rel=\"noopener noreferrer\">Q<\/a> Promete biblioteca expl\u00edcitamente.<\/p>\n<p>Esto significa que las promesas devueltas por mis llamadas a los puntos finales de Sync Gateway estaban siendo reemplazadas por la versi\u00f3n Q. Dado que Bluebird y Q comparten gran parte de su API central, me cost\u00f3 un poco darme cuenta de lo que estaba pasando.<\/p>\n<p>Hay varias formas de abordar esta cuesti\u00f3n. Desde <code>devolver<\/code> es una rutina tan simple, que decid\u00ed seguir utilizando el equivalente <code>entonces<\/code> llamar.<\/p>\n<p>Aqu\u00ed tienes algunas alternativas que puedes probar si quieres:<\/p>\n<ul>\n<li><code>promisifyAll<\/code> Swagger en lugar de utilizar el soporte integrado de Swagger<\/li>\n<li>Utilice el proyecto \"bluebird-q\" para sustituir Q por Bluebird<\/li>\n<li>Envuelva las llamadas con <code>Promise.resolver()<\/code><\/li>\n<\/ul>\n<h2 id=\"postscript\">Posdata<\/h2>\n<p>Consulte m\u00e1s recursos en nuestra <a href=\"https:\/\/www.couchbase.com\/blog\/es\/developers\/community\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\" target=\"_blank\" rel=\"noopener noreferrer\">portal para desarrolladores<\/a> y s\u00edganos en Twitter <a href=\"https:\/\/twitter.com\/CouchbaseDev\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"citation\">@CouchbaseDev<\/span><\/a>.<\/p>\n<p>Puede enviar preguntas a nuestro <a href=\"https:\/\/www.couchbase.com\/blog\/es\/forums\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\" target=\"_blank\" rel=\"noopener noreferrer\">foros<\/a>. Y participamos activamente en <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\" target=\"_blank\" rel=\"noopener noreferrer\">Stack Overflow<\/a>.<\/p>\n<p>Puede seguirme personalmente en <a href=\"https:\/\/twitter.com\/HodGreeley\" target=\"_blank\" rel=\"noopener noreferrer\"><span class=\"citation\">@HodGreeley<\/span><\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Recently I wrote about using Node.js with Swagger to build a simple listener for the Sync Gateway changes feed. In that version I did everything using synchronous calls. I&#8217;m working to build a more complete solution, so I decided to [&hellip;]<\/p>\n","protected":false},"author":73,"featured_media":2748,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1810,1822],"tags":[1790],"ppma_author":[9042],"class_list":["post-2511","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-mobile","category-node-js","tag-swagger"],"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>Bluebird Promises and Swagger in Node.js - 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\/bluebird-promises-swagger-nodejs\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bluebird Promises and Swagger in Node.js\" \/>\n<meta property=\"og:description\" content=\"Recently I wrote about using Node.js with Swagger to build a simple listener for the Sync Gateway changes feed. In that version I did everything using synchronous calls. I&#8217;m working to build a more complete solution, so I decided to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/bluebird-promises-swagger-nodejs\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-23T07:11:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:23:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/Swagger-Logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"360\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Hod Greeley, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@HodGreeley\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hod Greeley, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/\"},\"author\":{\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/9b62593c8a13531e53d52fcd5aabbca4\"},\"headline\":\"Bluebird Promises and Swagger in Node.js\",\"datePublished\":\"2017-01-23T07:11:55+00:00\",\"dateModified\":\"2025-06-14T04:23:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/\"},\"wordCount\":285,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/01\\\/Swagger-Logo.png\",\"keywords\":[\"Swagger\"],\"articleSection\":[\"Couchbase Mobile\",\"Node.js\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/\",\"name\":\"Bluebird Promises and Swagger in Node.js - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/01\\\/Swagger-Logo.png\",\"datePublished\":\"2017-01-23T07:11:55+00:00\",\"dateModified\":\"2025-06-14T04:23:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/01\\\/Swagger-Logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/01\\\/Swagger-Logo.png\",\"width\":360,\"height\":360,\"caption\":\"Swagger Logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/bluebird-promises-swagger-nodejs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Bluebird Promises and Swagger in 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\":\"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\\\/9b62593c8a13531e53d52fcd5aabbca4\",\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g21eb69cb5d4a401fb23b149e4f4e9e87\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g\",\"caption\":\"Hod Greeley, Developer Advocate, Couchbase\"},\"description\":\"Hod Greeley is a Developer Advocate for Couchbase, living in Silicon Valley. He has over two decades of experience as a software engineer and engineering manager. He has worked in a variety of software fields, including computational physics and chemistry, computer and network security, finance, and mobile. Prior to joining Couchbase in 2016, Hod led developer relations for mobile at Samsung. Hod holds a Ph.D. in chemical physics from Columbia University.\",\"sameAs\":[\"https:\\\/\\\/hod.greeley.org\\\/blog\",\"https:\\\/\\\/x.com\\\/HodGreeley\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/es\\\/author\\\/hod-greeley\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Bluebird Promises and Swagger in Node.js - 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\/bluebird-promises-swagger-nodejs\/","og_locale":"es_MX","og_type":"article","og_title":"Bluebird Promises and Swagger in Node.js","og_description":"Recently I wrote about using Node.js with Swagger to build a simple listener for the Sync Gateway changes feed. In that version I did everything using synchronous calls. I&#8217;m working to build a more complete solution, so I decided to [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/bluebird-promises-swagger-nodejs\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-23T07:11:55+00:00","article_modified_time":"2025-06-14T04:23:18+00:00","og_image":[{"width":360,"height":360,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/Swagger-Logo.png","type":"image\/png"}],"author":"Hod Greeley, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@HodGreeley","twitter_misc":{"Written by":"Hod Greeley, Developer Advocate, Couchbase","Est. reading time":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/"},"author":{"name":"Hod Greeley, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4"},"headline":"Bluebird Promises and Swagger in Node.js","datePublished":"2017-01-23T07:11:55+00:00","dateModified":"2025-06-14T04:23:18+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/"},"wordCount":285,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/Swagger-Logo.png","keywords":["Swagger"],"articleSection":["Couchbase Mobile","Node.js"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/","url":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/","name":"Bluebird Promises and Swagger in Node.js - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/Swagger-Logo.png","datePublished":"2017-01-23T07:11:55+00:00","dateModified":"2025-06-14T04:23:18+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/Swagger-Logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/01\/Swagger-Logo.png","width":360,"height":360,"caption":"Swagger Logo"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/bluebird-promises-swagger-nodejs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Bluebird Promises and Swagger in Node.js"}]},{"@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\/9b62593c8a13531e53d52fcd5aabbca4","name":"Hod Greeley, Defensor del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g21eb69cb5d4a401fb23b149e4f4e9e87","url":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","caption":"Hod Greeley, Developer Advocate, Couchbase"},"description":"Hod Greeley es desarrollador de Couchbase y vive en Silicon Valley. Tiene m\u00e1s de dos d\u00e9cadas de experiencia como ingeniero de software y director de ingenier\u00eda. Ha trabajado en una variedad de campos de software, incluyendo f\u00edsica computacional y qu\u00edmica, seguridad inform\u00e1tica y de redes, finanzas y m\u00f3viles. Antes de unirse a Couchbase en 2016, Hod dirigi\u00f3 las relaciones con desarrolladores para m\u00f3viles en Samsung. Hod es doctor en f\u00edsica qu\u00edmica por la Universidad de Columbia.","sameAs":["https:\/\/hod.greeley.org\/blog","https:\/\/x.com\/HodGreeley"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/hod-greeley\/"}]}},"acf":[],"authors":[{"term_id":9042,"user_id":73,"is_guest":0,"slug":"hod-greeley","display_name":"Hod Greeley, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2511","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\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2511"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2511\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/2748"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2511"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2511"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2511"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2511"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}