{"id":2170,"date":"2016-03-28T21:48:07","date_gmt":"2016-03-28T21:48:07","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2170"},"modified":"2023-06-23T05:23:10","modified_gmt":"2023-06-23T12:23:10","slug":"storing-base64-files-directly-in-couchbase-via-nodejs","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/storing-base64-files-directly-in-couchbase-via-nodejs\/","title":{"rendered":"Armazenamento de arquivos Base64 diretamente no Couchbase via Node.js"},"content":{"rendered":"<p>Ent\u00e3o voc\u00ea est\u00e1 desenvolvendo um aplicativo e deseja armazenar seus arquivos no Couchbase. No momento, o Couchbase permite documentos com at\u00e9 20 MB de tamanho, o que \u00e9 maior do que voc\u00ea imagina. Por que armazenar nossos arquivos no Couchbase em vez de no sistema de arquivos? Talvez voc\u00ea n\u00e3o tenha muito espa\u00e7o de armazenamento no sistema de arquivos do seu aplicativo ou, melhor ainda, talvez queira aproveitar os recursos de replica\u00e7\u00e3o que o Couchbase oferece para que voc\u00ea nunca corra o risco de perder seus dados preciosos.<\/p>\n<p>Vamos dar uma olhada na aceita\u00e7\u00e3o de uploads de arquivos, convertendo-os em cadeias de caracteres base64 e, em seguida, armazenando as cadeias de caracteres no Couchbase junto com os metadados necess\u00e1rios.<\/p>\n<h2>Como configurar o Couchbase<\/h2>\n<p>O Couchbase Server ser\u00e1 o nosso banco de dados NoSQL escolhido aqui. Como se trata de um banco de dados de documentos, o armazenamento de objetos JavaScript faz todo o sentido.<\/p>\n<p>Se voc\u00ea ainda n\u00e3o tiver uma c\u00f3pia do Couchbase Server 4.1 ou superior, v\u00e1 para o site <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/nosql-databases\/downloads\/\">downloads<\/a> e obtenha o bin\u00e1rio que atenda \u00e0s suas necessidades de plataforma (Mac, Linux, Windows).<\/p>\n<p>Com o Couchbase instalado, precisamos adicionar algo que nos permita usar a linguagem de consulta N1QL. Precisamos adicionar um \u00edndice prim\u00e1rio. Isso pode ser feito usando o cliente Couchbase Query (CBQ).<\/p>\n<p>No Mac, inicie o CBQ executando o seguinte no Terminal:<\/p>\n<pre>\r\n<code>\r\n.\/Applications\/Couchbase Server.app\/Contents\/Resources\/couchbase-core\/bin\/cbq\r\n<\/code>\r\n<\/pre>\n<p>No Microsoft Windows, o mesmo pode ser feito executando o seguinte:<\/p>\n<pre>\r\n<code>\r\nC:\/Arquivos de Programas\/Couchbase\/Server\/bin\/cbq.exe\r\n<\/code>\r\n<\/pre>\n<p>Se voc\u00ea nunca usou o CBQ antes, ver\u00e1 que ele \u00e9 muito parecido com a ferramenta de linha de comando do MySQL ou com o SQLPlus da Oracle. Podemos executar consultas com ele, entre outras coisas. A consulta que executaremos criar\u00e1 um \u00edndice prim\u00e1rio. Execute o seguinte:<\/p>\n<pre>\r\n<code>\r\nCREATE PRIMARY INDEX ON `default` USING GSI;\r\n<\/code>\r\n<\/pre>\n<p>O Couchbase Server agora est\u00e1 pronto para ser usado com nosso aplicativo Node.js.<\/p>\n<h2>Configura\u00e7\u00e3o de um aplicativo b\u00e1sico do Node.js<\/h2>\n<p>Muito do que vemos aqui foi extra\u00eddo de dois tutoriais diferentes que escrevi sobre o assunto. Uma vez demonstrei como aceitar <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2016\/02\/upload-files-to-node-js-using-angular-2\/\">uploads de arquivos no Node.js por meio de um aplicativo Angular 2<\/a>, bem como <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2016\/02\/convert-an-uploaded-image-to-a-base64-string-in-node-js\/\">como converter esses arquivos em dados base64<\/a>. Desta vez, vamos apenas inserir os dados base64 no Couchbase Server.<\/p>\n<p>Primeiro, vamos criar um novo projeto Node.js. Ele n\u00e3o ter\u00e1 um front-end, mas voc\u00ea pode criar o seu pr\u00f3prio ou usar uma ferramenta como o Postman para testes. Seu projeto deve ter os seguintes arquivos e diret\u00f3rios:<\/p>\n<pre>\r\n<code>\r\nuploads\/\r\nconfig.json\r\napp.js\r\n<\/code>\r\n<\/pre>\n<p>Usando um Terminal (Mac e Linux) ou um Prompt de Comando (Windows), execute o seguinte no diret\u00f3rio do projeto:<\/p>\n<pre>\r\n<code>\r\nnpm init -y\r\n<\/code>\r\n<\/pre>\n<p>O comando acima criar\u00e1 um novo <strong>package.json<\/strong> arquivo. Agora precisamos instalar as depend\u00eancias do nosso projeto. Isso pode ser feito executando o seguinte no prompt de comando ou no terminal:<\/p>\n<pre>\r\n<code>\r\nnpm install couchbase express uuid body-parser multer --save\r\n<\/code>\r\n<\/pre>\n<p>Agora podemos come\u00e7ar a desenvolver nosso pequeno aplicativo Node.js. Vamos mant\u00ea-lo bem simples. Na se\u00e7\u00e3o <strong>config.json<\/strong> inclui as seguintes informa\u00e7\u00f5es sobre nosso n\u00f3 do Couchbase:<\/p>\n<pre>\r\n<code>\r\n{\r\n    \"couchbase\": {\r\n        \"server\": \"127.0.0.1:8091\",\r\n        \"bucket\": \"default\"\r\n    }\r\n}\r\n<\/code>\r\n<\/pre>\n<p>Isso evitar\u00e1 que tenhamos que codificar nossas informa\u00e7\u00f5es de servidor em todo o projeto.<\/p>\n<p>Agora, queremos preencher nosso arquivo de l\u00f3gica central do Node.js, o arquivo <strong>app.js<\/strong> arquivo. V\u00e1 em frente e adicione o seguinte c\u00f3digo:<\/p>\n<pre>\r\n<code>\r\nvar express = require(\"express\");\r\nvar bodyParser = require(\"body-parser\");\r\nvar multer = require(\"multer\");\r\nvar fs = require(\"fs\");\r\nvar app = express();\r\n\r\napp.use(bodyParser.json());\r\napp.use(bodyParser.urlencoded({ extended: true }));\r\n\r\napp.use(function(req, res, next) {\r\n    res.header(\"Access-Control-Allow-Origin\", \"*\");\r\n    res.header(\"Access-Control-Allow-Headers\", \"Origin, X-Requested-With, Content-Type, Accept\");\r\n    next();\r\n});\r\n\r\napp.post(\"\/upload\", multer({dest: \".\/uploads\/\"}).array(\"uploads\", 12), function(req, res) {\r\n    var fileInfo = [];\r\n    for(var i = 0; i &lt; req.files.length; i++) {\r\n        fileInfo.push({\r\n            &quot;originalName&quot;: req.files[i].originalName,\r\n            &quot;size&quot;: req.files[i].size,\r\n            &quot;b64&quot;: new Buffer(fs.readFileSync(req.files[i].path)).toString(&quot;base64&quot;)\r\n        });\r\n        fs.unlink(req.files[i].path);\r\n    }\r\n    res.send(fileInfo);\r\n});\r\n\r\nvar server = app.listen(3000, function() {\r\n    console.log(&quot;Listening on port %s...&quot;, server.address().port);\r\n});\r\n<\/code>\r\n<\/pre>\n<p>Na verdade, voc\u00ea chegou ao ponto em que eu parei na minha <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2016\/02\/convert-an-uploaded-image-to-a-base64-string-in-node-js\/\">Tutorial de convers\u00e3o base64 do Node.js<\/a>. O problema \u00e9 que agora queremos armazenar esses dados no Couchbase Server.<\/p>\n<h2>Inser\u00e7\u00e3o de dados de arquivo no Couchbase por meio de consultas N1QL<\/h2>\n<p>Vamos come\u00e7ar incluindo as v\u00e1rias informa\u00e7\u00f5es de depend\u00eancia que baixamos nas etapas anteriores. Na parte superior do arquivo <strong>app.js<\/strong> com as outras importa\u00e7\u00f5es, inclua o seguinte:<\/p>\n<pre>\r\n<code>\r\nvar couchbase = require(\"couchbase\");\r\nvar N1qlQuery = require(&apos;couchbase&apos;).N1qlQuery;\r\nvar uuid = require(\"uuid\");\r\nvar config = require(\".\/config\");\r\n<\/code>\r\n<\/pre>\n<p>Estamos incluindo o Couchbase, o mecanismo N1QL, nossas informa\u00e7\u00f5es de servidor e a biblioteca para gerar valores exclusivos. Agora, antes ou acima do bloco de c\u00f3digo para compartilhamento de recursos entre origens, adicione a seguinte linha:<\/p>\n<pre>\r\n<code>\r\nvar bucket = (new couchbase.Cluster(config.couchbase.server)).openBucket(config.couchbase.bucket);\r\n<\/code>\r\n<\/pre>\n<p>Como eu disse, n\u00e3o importa realmente onde voc\u00ea a coloca, mas essa linha se conectar\u00e1 a um cluster do Couchbase e abrir\u00e1 o bucket, ambos definidos na linha <strong>config.json<\/strong> arquivo.<\/p>\n<p>Agora vamos ao que interessa!<\/p>\n<p>Vamos alterar a fun\u00e7\u00e3o de ponto de extremidade para que os uploads sejam salvos no Couchbase antes de devolver os dados ao usu\u00e1rio. V\u00e1 em frente e altere a fun\u00e7\u00e3o de endpoint para que se pare\u00e7a com o seguinte:<\/p>\n<pre>\r\n<code>\r\napp.post(\"\/upload\", multer({dest: \".\/uploads\/\"}).array(\"uploads\", 12), function(req, res) {\r\n    var fileInfo = [];\r\n    for(var i = 0; i &lt; req.files.length; i++) {\r\n        fileInfo.push({\r\n            &quot;originalName&quot;: req.files[i].originalName,\r\n            &quot;size&quot;: req.files[i].size,\r\n            &quot;b64&quot;: new Buffer(fs.readFileSync(req.files[i].path)).toString(&quot;base64&quot;)\r\n        });\r\n        fs.unlink(req.files[i].path);\r\n    }\r\n    var statement = &quot;INSERT INTO `&quot; + config.couchbase.bucket + &quot;` (KEY,VALUE) VALUES &quot; +\r\n                    &quot;($1, {&amp;apos;files&amp;apos;: $2})&quot;;\r\n    var query = N1qlQuery.fromString(statement);\r\n    bucket.query(query, [uuid.v4(), fileInfo], function(error, result) {\r\n        if(error) {\r\n            return res.status(400).send({&quot;status&quot;: &quot;error&quot;, &quot;message&quot;: error});\r\n        }\r\n        res.send(fileInfo);\r\n    });\r\n});\r\n<\/code>\r\n<\/pre>\n<p>Observe que agora estamos criando um <code>INSERIR<\/code> statement? Essa \u00e9 uma consulta parametrizada para evitar qualquer tipo de ataque de inje\u00e7\u00e3o de SQL. Os par\u00e2metros s\u00e3o definidos na consulta real e s\u00e3o o valor de identifica\u00e7\u00e3o exclusivo para a chave e a matriz de arquivos que criamos. Somente depois que os dados forem salvos, eles ser\u00e3o retornados ao usu\u00e1rio.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Sim, houve um pouco de manipula\u00e7\u00e3o aqui no que diz respeito aos uploads reais de arquivos, mas isso se deve ao fato de que nos preocupamos mais com a inser\u00e7\u00e3o no Couchbase. Tamb\u00e9m porque isso foi explicado em meu <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2016\/02\/convert-an-uploaded-image-to-a-base64-string-in-node-js\/\">tutorial anterior<\/a>. Aqui vimos como fazer uma consulta N1QL para inserir a matriz que continha todos os nossos arquivos base64 que foram carregados. Desde que o tamanho dos arquivos n\u00e3o ultrapasse os limites do Couchbase, essa \u00e9 uma solu\u00e7\u00e3o perfeitamente aceit\u00e1vel e permitir\u00e1 a replica\u00e7\u00e3o, caso ela seja ativada.<\/p>","protected":false},"excerpt":{"rendered":"<p>So you&apos;re developing an application and you want to store your files in Couchbase. As of right now, Couchbase allows for documents up to 20MB in size which is larger than you think. Why would we store our files in [&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],"tags":[1597,1598],"ppma_author":[9032],"class_list":["post-2170","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-node-js","tag-base64","tag-image"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Storing Base64 Files Directly in Couchbase via 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\/pt\/storing-base64-files-directly-in-couchbase-via-nodejs\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Storing Base64 Files Directly in Couchbase via Node.js\" \/>\n<meta property=\"og:description\" content=\"So you&amp;apos;re developing an application and you want to store your files in Couchbase. As of right now, Couchbase allows for documents up to 20MB in size which is larger than you think. Why would we store our files in [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/storing-base64-files-directly-in-couchbase-via-nodejs\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2016-03-28T21:48:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-23T12:23:10+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\/storing-base64-files-directly-in-couchbase-via-nodejs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Storing Base64 Files Directly in Couchbase via Node.js\",\"datePublished\":\"2016-03-28T21:48:07+00:00\",\"dateModified\":\"2023-06-23T12:23:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/\"},\"wordCount\":862,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"base64\",\"image\"],\"articleSection\":[\"Couchbase Server\",\"Node.js\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/\",\"name\":\"Storing Base64 Files Directly in Couchbase via Node.js - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-03-28T21:48:07+00:00\",\"dateModified\":\"2023-06-23T12:23:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Storing Base64 Files Directly in Couchbase via 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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@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\/pt\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Storing Base64 Files Directly in Couchbase via 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\/pt\/storing-base64-files-directly-in-couchbase-via-nodejs\/","og_locale":"pt_BR","og_type":"article","og_title":"Storing Base64 Files Directly in Couchbase via Node.js","og_description":"So you&apos;re developing an application and you want to store your files in Couchbase. As of right now, Couchbase allows for documents up to 20MB in size which is larger than you think. Why would we store our files in [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/storing-base64-files-directly-in-couchbase-via-nodejs\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2016-03-28T21:48:07+00:00","article_modified_time":"2023-06-23T12:23:10+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\/storing-base64-files-directly-in-couchbase-via-nodejs\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Storing Base64 Files Directly in Couchbase via Node.js","datePublished":"2016-03-28T21:48:07+00:00","dateModified":"2023-06-23T12:23:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/"},"wordCount":862,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["base64","image"],"articleSection":["Couchbase Server","Node.js"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/","url":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/","name":"Storing Base64 Files Directly in Couchbase via Node.js - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-03-28T21:48:07+00:00","dateModified":"2023-06-23T12:23:10+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/storing-base64-files-directly-in-couchbase-via-nodejs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Storing Base64 Files Directly in Couchbase via Node.js"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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 dos desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@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 \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/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 \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2170"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2170\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2170"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}