{"id":2336,"date":"2016-07-19T17:24:30","date_gmt":"2016-07-19T17:24:30","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2336"},"modified":"2025-06-13T20:52:52","modified_gmt":"2025-06-14T03:52:52","slug":"better-updates-couchbase-lite","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/better-updates-couchbase-lite\/","title":{"rendered":"Uma maneira melhor de atualizar com o Couchbase Lite"},"content":{"rendered":"<p style=\"border: 0px\"><img decoding=\"async\" class=\"aligncenter\" style=\"max-width: 400px ! important\" src=\"\/wp-content\/original-assets\/2016\/july\/better-updates-couchbase-lite\/15528585_a62d152538_b.jpg\" alt=\"Edits of \" \/><\/p>\n<p style=\"text-align: center;font-size: 50%\">C\u00f3pia do rascunho original da partitura de Handel<\/p>\n<p style=\"text-align: center;font-size: 50%\">Foto cortesia de <a>Adrian Pallant<\/a> com permiss\u00e3o sob licen\u00e7a <a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/2.0\/\">CC BY-SA 2.0<\/a><\/p>\n<h2 style=\"border: 0px\">O U em CRUD<\/h2>\n<p><span style=\"color: #373737\">Em\u00a0<\/span><a style=\"font-family: inherit;font-size: 15px;line-height: 24.375px;border: 0px;font-style: inherit;font-weight: inherit;margin: 0px;padding: 0px;vertical-align: baseline;color: #1982d1;text-decoration: none\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/hg-exploring-couchbase-mobile-on-android-c.r.u.d\/\">este<\/a><span style=\"color: #373737\">\u00a0Em um post anterior, escrevi sobre como come\u00e7ar a usar opera\u00e7\u00f5es CRUD b\u00e1sicas em\u00a0<\/span><a style=\"font-family: inherit;font-size: 15px;line-height: 24.375px;border: 0px;font-style: inherit;font-weight: inherit;margin: 0px;padding: 0px;vertical-align: baseline;color: #1982d1;text-decoration: none\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/mobile\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Couchbase Lite<\/a><span style=\"color: #373737\">\u00a0no Android. Nesta nota r\u00e1pida, quero me aprofundar um pouco mais na atualiza\u00e7\u00e3o de documentos.  Isso abrir\u00e1 a porta para um conjunto totalmente novo de problemas.  Vamos dar uma olhada.<\/span><\/p>\n<p style=\"border: 0px\">O Couchbase Lite \u00e9 um banco de dados orientado a documentos.  Os documentos s\u00e3o armazenados como\u00a0<a style=\"border: 0px;font-family: inherit;font-style: inherit;font-weight: inherit;margin: 0px;padding: 0px;vertical-align: baseline;color: #1982d1;text-decoration: none\" href=\"https:\/\/www.json.org\/\">JSON<\/a> objetos.  Conforme descrito na postagem anterior, \u00e9 f\u00e1cil trabalhar diretamente com o conte\u00fado do documento.  Eles s\u00e3o armazenados no objeto do documento como um mapa.  Isso se encaixa perfeitamente nas formas nativas de manipular o conte\u00fado.<\/p>\n<h2 style=\"border: 0px\">Ajustando a abordagem direta<\/h2>\n<p style=\"border: 0px\">Quando voc\u00ea recupera um documento, obt\u00e9m uma c\u00f3pia que cont\u00e9m uma vers\u00e3o imut\u00e1vel dos dados.  Voc\u00ea pode lidar com isso copiando o mapa em um objeto map separado e, em seguida, substituindo o mapa antigo.  Isso \u00e9 mostrado neste trecho de c\u00f3digo:<\/p>\n<pre style=\"border: 0px\"><code class=\"java\" style=\"border: 0px;font-family: Monaco, Consolas,\">    profile = new HashMap();\r\n    profile.putAll(document.getProperties());\r\n    profile.put(\"type\", \"profile\");  \/\/ Add a \"type\" to the document\r\n\r\n    try {\r\n      document.putProperties(profile);\r\n    } catch (CouchbaseLiteException ex) {\r\n      Log.e(TAG, \"CBL operation failed\");\r\n    }<\/code><\/pre>\n<p style=\"border: 0px\">Na verdade, isso cria um novo\u00a0<a style=\"border: 0px;font-family: inherit;font-style: inherit;font-weight: inherit;margin: 0px;padding: 0px;vertical-align: baseline;color: #1982d1;text-decoration: none\" href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.2\/develop\/guides\/couchbase-lite\/native-api\/revision\/index.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">revis\u00e3o<\/a>\u00a0do documento, usando o novo corpo do documento.<\/p>\n<p style=\"border: 0px\">Como alternativa, voc\u00ea pode usar\u00a0<code style=\"border: 0px;font-family: Monaco, Consolas,\">createRevision()<\/code>\u00a0para obter um novo\u00a0<code style=\"border: 0px;font-family: Monaco, Consolas,\">UnsavedRevision<\/code>. Isso retorna uma c\u00f3pia da \u00faltima revis\u00e3o, mas com conte\u00fado mut\u00e1vel. Assim, voc\u00ea pode manipular diretamente o mapa de propriedades. As altera\u00e7\u00f5es s\u00e3o confirmadas chamando\u00a0<code style=\"border: 0px;font-family: Monaco, Consolas,\">salvar()<\/code>.  Esse trecho de c\u00f3digo tem o mesmo efeito final que o anterior:<\/p>\n<pre style=\"border: 0px\"><code class=\"java\" style=\"border: 0px;font-family: Monaco, Consolas,\">    UnsavedRevision update = document.createRevision();\r\n    profile = update.getProperties();\r\n    profile.put(\"type\", \"profile\");  \/\/ Add a \"type\" to the document\r\n\r\n    try {\r\n      update.save();\r\n    } catch (CouchbaseLiteException ex) {\r\n      Log.e(TAG, \"CBL operation failed\");\r\n    }<\/code><\/pre>\n<h2 style=\"border: 0px\">Revis\u00f5es, voc\u00ea diz?<\/h2>\n<p style=\"border: 0px\">Isso \u00e9 \u00f3timo para muitos aplicativos.  Ainda n\u00e3o falei muito sobre revis\u00f5es.  Voc\u00ea tem a ideia de que um documento est\u00e1 mudando.  O Couchbase Lite tem uma no\u00e7\u00e3o de revis\u00f5es de documentos para acompanhar essas altera\u00e7\u00f5es.<\/p>\n<p style=\"border: 0px\">No entanto, as revis\u00f5es s\u00e3o mais profundas do que apenas rastrear um conjunto linear de altera\u00e7\u00f5es.  O que n\u00e3o salta aos olhos em exemplos como os que mostrei \u00e9 a possibilidade de conflitos.  Os conflitos ocorrem quando mais de uma atualiza\u00e7\u00e3o de uma revis\u00e3o espec\u00edfica do documento \u00e9 confirmada no banco de dados.<\/p>\n<p style=\"border: 0px\">Pense nisso como se fosse um documento do mundo real.  Talvez voc\u00ea escreva um artigo (ou uma postagem de blog!) e o envie para v\u00e1rias pessoas para receber coment\u00e1rios.  Voc\u00ea recebe um conjunto de coment\u00e1rios e faz algumas altera\u00e7\u00f5es.  Em seguida, outro conjunto de coment\u00e1rios retorna, com base no mesmo documento original.  Fa\u00e7a isso com frequ\u00eancia suficiente e \u00e9 quase certo que voc\u00ea chegar\u00e1 a um caso em que algumas altera\u00e7\u00f5es se sobrep\u00f5em.  (Bem, para os desenvolvedores de software, provavelmente o melhor exemplo s\u00e3o os conflitos de mesclagem ao usar o controle de origem).  Conflito!<\/p>\n<h2 style=\"border: 0px\">Atualizador de documentos<\/h2>\n<p style=\"border: 0px\">Lidar com conflitos de documentos, hist\u00f3rico de revis\u00f5es e assim por diante \u00e9 mais do que eu gostaria de abordar neste post.  Mas podemos ter uma ideia de como o Couchbase ajuda.  Essa \u00faltima abordagem de atualiza\u00e7\u00e3o pode parecer um exagero, mas voc\u00ea passar\u00e1 a apreci\u00e1-la quando a resolu\u00e7\u00e3o de conflitos entrar em a\u00e7\u00e3o.  Aqui est\u00e1 o c\u00f3digo:<\/p>\n<pre style=\"border: 0px\"><code class=\"java\" style=\"border: 0px;font-family: Monaco, Consolas,\">    document = database.getDocument(documentId);\r\n    try {\r\n      document.update(new Document.DocumentUpdater() {\r\n        @Override\r\n        public boolean update(UnsavedRevision newRevision) {\r\n          Map properties = newRevision.getUserProperties();\r\n          properties.put(\"type\", \"profile\");\r\n          newRevision.setUserProperties(properties);\r\n          return true;\r\n        }\r\n      });\r\n    } catch (CouchbaseLiteException ex) {\r\n      Log.e(TAG, \"CBL operation failed\");\r\n    }<\/code><\/pre>\n<p style=\"border: 0px\">Uau, isso parece muito mais complexo do que os exemplos anteriores.  Na verdade, \u00e9 apenas um pouco mais complicado.  Essa estrutura adicional acaba tornando a vida muito mais f\u00e1cil.  Ent\u00e3o, o que est\u00e1 acontecendo?<\/p>\n<p style=\"border: 0px\">Essa constru\u00e7\u00e3o permite que o Couchbase Lite lide com o trabalho grunge de lidar com conflitos.  Voc\u00ea define um retorno de chamada com base no\u00a0<code style=\"border: 0px;font-family: Monaco, Consolas,\">Atualizador de documentos<\/code>\u00a0interface. O Couchbase Lite se encarregar\u00e1 de criar um novo\u00a0<code style=\"border: 0px;font-family: Monaco, Consolas,\">UnsavedRevision<\/code>\u00a0como no exemplo anterior. Seu m\u00e9todo precisa, ent\u00e3o, fazer as altera\u00e7\u00f5es que voc\u00ea deseja. Ao retornar, o Couchbase Lite tenta automaticamente salvar o documento.\u00a0<em style=\"border: 0px;font-family: inherit;font-weight: inherit;margin: 0px;padding: 0px;vertical-align: baseline\">Se ele detectar um conflito<\/em>\u00a0O Couchbase Lite simplesmente chama\u00a0<code style=\"border: 0px;font-family: Monaco, Consolas,\">update()<\/code>\u00a0novamente.  Retorno\u00a0<code style=\"border: 0px;font-family: Monaco, Consolas,\">verdadeiro<\/code>\u00a0se voc\u00ea tiver feito altera\u00e7\u00f5es que deseja salvar, ou\u00a0<code style=\"border: 0px;font-family: Monaco, Consolas,\">falso<\/code>\u00a0caso contr\u00e1rio.<\/p>\n<p style=\"border: 0px\">Se quiser saber mais sobre revis\u00f5es, colis\u00f5es e resolu\u00e7\u00e3o de conflitos, d\u00ea uma olhada em nosso guia\u00a0<a style=\"border: 0px;font-family: inherit;font-style: inherit;font-weight: inherit;margin: 0px;padding: 0px;vertical-align: baseline;color: #1982d1;text-decoration: none\" href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/1.2\/develop\/guides\/couchbase-lite\/native-api\/document\/index.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">aqui<\/a><\/p>\n<h2 style=\"border: 0px\">P\u00f3s-escrito<\/h2>\n<p style=\"border: 0px\">Confira mais recursos em nosso <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/community\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">portal do desenvolvedor<\/a> e nos siga no Twitter <a href=\"https:\/\/twitter.com\/CouchbaseDev\">@CouchbaseDev<\/a>.<\/p>\n<p style=\"border: 0px\">Voc\u00ea pode postar perguntas em nosso <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">f\u00f3runs<\/a>. E participamos ativamente de <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\">Estouro de pilha<\/a>.<\/p>\n<p style=\"border: 0px\">Voc\u00ea pode me seguir pessoalmente em <a href=\"https:\/\/twitter.com\/HodGreeley\">@HodGreeley<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Copy of Original Draft Score by Handel Photo courtesy of Adrian Pallant with permission under license CC BY-SA 2.0 The U in CRUD In\u00a0this\u00a0earlier post, I wrote about getting started with basic CRUD operations in\u00a0Couchbase Lite\u00a0on Android.\u00a0In this quick note, [&hellip;]<\/p>\n","protected":false},"author":73,"featured_media":2927,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2370,1815,7667,1810],"tags":[],"ppma_author":[9042],"class_list":["post-2336","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-best-practices-and-tutorials","category-couchbase-lite","category-couchbase-mobile"],"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>A better way to update with Couchbase Lite - 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\/better-updates-couchbase-lite\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A better way to update with Couchbase Lite\" \/>\n<meta property=\"og:description\" content=\"Copy of Original Draft Score by Handel Photo courtesy of Adrian Pallant with permission under license CC BY-SA 2.0 The U in CRUD In\u00a0this\u00a0earlier post, I wrote about getting started with basic CRUD operations in\u00a0Couchbase Lite\u00a0on Android.\u00a0In this quick note, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/better-updates-couchbase-lite\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-07-19T17:24:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:52:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/07\/15528585_a62d152538_b.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/\"},\"author\":{\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/9b62593c8a13531e53d52fcd5aabbca4\"},\"headline\":\"A better way to update with Couchbase Lite\",\"datePublished\":\"2016-07-19T17:24:30+00:00\",\"dateModified\":\"2025-06-14T03:52:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/\"},\"wordCount\":632,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2016\\\/07\\\/15528585_a62d152538_b.jpg\",\"articleSection\":[\"Android\",\"Best Practices and Tutorials\",\"Couchbase Lite\",\"Couchbase Mobile\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/\",\"name\":\"A better way to update with Couchbase Lite - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2016\\\/07\\\/15528585_a62d152538_b.jpg\",\"datePublished\":\"2016-07-19T17:24:30+00:00\",\"dateModified\":\"2025-06-14T03:52:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2016\\\/07\\\/15528585_a62d152538_b.jpg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2016\\\/07\\\/15528585_a62d152538_b.jpg\",\"width\":1024,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/better-updates-couchbase-lite\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A better way to update with Couchbase Lite\"}]},{\"@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\\\/9b62593c8a13531e53d52fcd5aabbca4\",\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\\\/pt\\\/author\\\/hod-greeley\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A better way to update with Couchbase Lite - 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\/better-updates-couchbase-lite\/","og_locale":"pt_BR","og_type":"article","og_title":"A better way to update with Couchbase Lite","og_description":"Copy of Original Draft Score by Handel Photo courtesy of Adrian Pallant with permission under license CC BY-SA 2.0 The U in CRUD In\u00a0this\u00a0earlier post, I wrote about getting started with basic CRUD operations in\u00a0Couchbase Lite\u00a0on Android.\u00a0In this quick note, [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/better-updates-couchbase-lite\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-07-19T17:24:30+00:00","article_modified_time":"2025-06-14T03:52:52+00:00","og_image":[{"width":1024,"height":768,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/07\/15528585_a62d152538_b.jpg","type":"image\/jpeg"}],"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":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/"},"author":{"name":"Hod Greeley, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4"},"headline":"A better way to update with Couchbase Lite","datePublished":"2016-07-19T17:24:30+00:00","dateModified":"2025-06-14T03:52:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/"},"wordCount":632,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/07\/15528585_a62d152538_b.jpg","articleSection":["Android","Best Practices and Tutorials","Couchbase Lite","Couchbase Mobile"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/","url":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/","name":"A better way to update with Couchbase Lite - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/07\/15528585_a62d152538_b.jpg","datePublished":"2016-07-19T17:24:30+00:00","dateModified":"2025-06-14T03:52:52+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/07\/15528585_a62d152538_b.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2016\/07\/15528585_a62d152538_b.jpg","width":1024,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/better-updates-couchbase-lite\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"A better way to update with Couchbase Lite"}]},{"@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\/9b62593c8a13531e53d52fcd5aabbca4","name":"Hod Greeley, Advogado do desenvolvedor, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@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 \u00e9 um defensor dos desenvolvedores da Couchbase e mora no Vale do Sil\u00edcio. Ele tem mais de duas d\u00e9cadas de experi\u00eancia como engenheiro de software e gerente de engenharia. Trabalhou em diversas \u00e1reas de software, incluindo f\u00edsica e qu\u00edmica computacional, seguran\u00e7a de computadores e redes, finan\u00e7as e dispositivos m\u00f3veis. Antes de ingressar na Couchbase em 2016, Hod liderou as rela\u00e7\u00f5es com desenvolvedores para dispositivos m\u00f3veis na Samsung. Hod \u00e9 Ph.D. em f\u00edsica qu\u00edmica pela Universidade de Columbia.","sameAs":["https:\/\/hod.greeley.org\/blog","https:\/\/x.com\/HodGreeley"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/2336","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\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2336"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2336\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/2927"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2336"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}