{"id":1908,"date":"2015-09-01T17:41:18","date_gmt":"2015-09-01T17:41:17","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1908"},"modified":"2023-09-07T04:52:09","modified_gmt":"2023-09-07T11:52:09","slug":"scoremore-creating-document-objects-views","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/scoremore-creating-document-objects-views\/","title":{"rendered":"ScoreMore:  Criando Baseball ORM e visualiza\u00e7\u00f5es"},"content":{"rendered":"<p style=\"text-align:center\">\u00a0<\/p>\n<p style=\"margin-left:0in;text-align:justify\">Preparando-se para a temporada de beisebol, <a href=\"https:\/\/scoremorebaseball.com\/\">ScoreMore Beisebol<\/a> recentemente, acabou de acertar em cheio com o lan\u00e7amento de seu aplicativo em todas as principais plataformas m\u00f3veis.  Um dos principais diferenciais do aplicativo \u00e9 o uso de <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/mobile\/\">Couchbase<\/a> que foi discutido no <a href=\"https:\/\/bit.ly\/blogcc13\">Blog ScoreMore com o Couchbase Mobile<\/a>.  Neste blog, exploraremos como o aplicativo projetou seus mapeadores de objetos e obteve suas visualiza\u00e7\u00f5es.\u00a0<\/p>\n<p style=\"margin-left:0in;text-align:justify\">Para o ScoreMore, o design do mapa de rela\u00e7\u00e3o de objetos \u00e9 manter um atributo espec\u00edfico para <em>\"tipo\"<\/em> a fim de identificar o tipo de <em>\"objeto\"<\/em> o documento \u00e9.  No beisebol, uma equipe \u00e9 formada por membros com v\u00e1rias fun\u00e7\u00f5es.  No exemplo abaixo, <em>\"type\": \"coach\"<\/em> \u00e9 para um documento que cont\u00e9m todas as informa\u00e7\u00f5es de um t\u00e9cnico durante o jogo.  Outras fun\u00e7\u00f5es ser\u00e3o definidas por seus respectivos <em>\"tipo\"<\/em><\/p>\n<pre style=\"text-align:left\">\r\n<code>1:  {  \r\n2:    \"email\": \"demo@example.com\",  \r\n3:    \"hash\": \"da5ce4f993719a61d531963e6242f4cb3091a497ed448c88dbn83m015\",  \r\n4:    \"salt\": \"Q29iamVjdCBJbnQ4QXJyYXlf\",  \r\n5:    \"type\": \"coach\"  \r\n6:  }  \r\n<\/code><\/pre>\n<p style=\"margin-left:0in\"><sub><em><strong>Observa\u00e7\u00e3o:<\/strong> hash e salt s\u00e3o para armazenamento de senhas, _id e _rev n\u00e3o s\u00e3o mostrados, pois s\u00e3o gerados automaticamente pelo Couchbase. Vers\u00f5es leg\u00edveis para humanos de _id ser\u00e3o usadas em exemplos futuros, como \"coach_1\"<\/em><\/sub><\/p>\n<p style=\"margin-left:0in;text-align:justify\">Em alguns documentos, o n\u00f3 de n\u00edvel inferior de uma estrutura pode ser rolado para uma matriz no documento propriet\u00e1rio.  O exemplo cl\u00e1ssico \u00e9 o de transferir todos os endere\u00e7os de um contato para uma matriz.  No ScoreMore Baseball, cada contato de um rebatedor <em>\"hit\"<\/em> \u00e9 acumulado em uma matriz para o jogo em que ocorreu.  Da mesma forma, para uma equipe, o registro de vit\u00f3rias e derrotas de cada temporada \u00e9 acumulado em uma matriz na Equipe.  Dessa forma, h\u00e1 uma defini\u00e7\u00e3o clara do primeiro grau de separa\u00e7\u00e3o e relacionamento entre os atributos.<\/p>\n<pre style=\"text-align:left\">\r\n<code>1:  {  \r\n2:    \"coachid\": \"coach_1\",  \r\n3:    \"leagueid\": \"league_1\",  \r\n4:    \"name\": \"Dragons\",  \r\n5:    \"nameabbr\": \"DRG\",  \r\n6:    \"record\": [  \r\n7:      {  \r\n8:        \"losses\": 16,  \r\n9:        \"ties\": 2,  \r\n10:        \"wins\": 24,  \r\n11:        \"yearid\": 2014  \r\n12:      },  \r\n13:      {  \r\n14:        \"losses\": 3,  \r\n15:        \"ties\": 0,  \r\n16:        \"wins\": 7,  \r\n17:        \"yearid\": 2015  \r\n18:      }  \r\n19:    ],  \r\n20:    \"type\": \"team\"  \r\n21:  }  \r\n<\/code><\/pre>\n<p style=\"margin-left:0in;text-align:justify\">\u00a0<\/p>\n<p style=\"margin-left:0in;text-align:justify\">A equipe do Score More Baseball tamb\u00e9m mant\u00e9m os resultados do beisebol organizados em seu <a href=\"https:\/\/developer.couchbase.com\/mobile\/develop\/guides\/couchbase-lite\/native-api\/view\/index.html\">Visualiza\u00e7\u00f5es,<\/a> em que cada View retorna apenas documentos de um \u00fanico <em>\"tipo\"<\/em>.  Com as visualiza\u00e7\u00f5es, a primeira verifica\u00e7\u00e3o ser\u00e1 uma instru\u00e7\u00e3o \"if-clause\", validando documentos que correspondam a uma determinada <em>\"tipo\"<\/em>especificado por uma verifica\u00e7\u00e3o do <em>\"tipo\" <\/em>ou em rela\u00e7\u00e3o a um campo que seja exclusivo desse tipo de documento. Um exemplo abaixo \u00e9 a visualiza\u00e7\u00e3o do gr\u00e1fico de pulveriza\u00e7\u00e3o, que mostra o local de cada rebatida que o jogador j\u00e1 fez.<\/p>\n<p style=\"margin-left:0in;text-align:justify\">O c\u00f3digo abaixo primeiro verifica se o documento (nesse caso, um jogo) cont\u00e9m uma matriz de acertos para o time da casa ou para o time visitante, omitindo os documentos gerados pelo Sync Gateway. Em seguida, ele itera por todas essas ocorr\u00eancias e, se os par\u00e2metros de pesquisa do Player (especificados por <em>'playerid'<\/em>) para a temporada em quest\u00e3o (especificada por '<em>yearid'<\/em>) correspondem ao hit, ent\u00e3o o <em>'hit'<\/em> \u00e9 adicionado ao conjunto de resultados. Cada local de acerto tem um <em>'x'<\/em> e <em>'y'<\/em> bem como um conjunto de <em>'tipo'<\/em>indicando se a rebatida foi uma bola voadora, uma linha de transmiss\u00e3o ou uma bola rasteira.<\/p>\n<pre style=\"text-align:left\">\r\n<code>1:  function (doc, meta) {  \r\n2:   if(doc.hometeambatting &amp;&amp; meta.id.substring(0,5) != \"_sync\") {  \r\n3:    for (i=0; i &lt; doc.hometeambatting.length; i++) {    \r\n4:      emit([doc.hometeambatting[i].playerid, doc.yearid],   \r\n5:       [doc.hometeambatting[i].x, doc.hometeambatting[i].y,  \r\n6:       doc.hometeambatting[i].hittype]);        \r\n7:    }  \r\n8:   }  \r\n9:   if(doc.awayteambatting &amp;&amp; meta.id.substring(0,5) != &quot;_sync&quot;) {  \r\n10:    for (i=0; i &lt; doc.awayteambatting.length; i++) {      \r\n11:      emit([doc.awayteambatting[i].playerid, doc.yearid],   \r\n12:       [doc.awayteambatting[i].x, doc.awayteambatting[i].y,  \r\n13:       doc.awayteambatting[i].hittype]);       \r\n14:    }  \r\n15:   }  \r\n16:  }  \r\n<\/code><\/pre>\n<p style=\"text-align:justify\">\u00a0<\/p>\n<p style=\"text-align:justify\">Por exemplo, o gr\u00e1fico de pulveriza\u00e7\u00e3o abaixo mostra o local de todas as rebatidas do \"jogador_1\" na temporada de 2015, tendo (key=[\"jogador_1\", 2015]) Pontos vermelhos representam bolas voadoras, pontos brancos s\u00e3o line drives e pontos amarelos s\u00e3o bolas rasteiras.<\/p>\n<p style=\"text-align:center\">\u00a0<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<p style=\"margin-left:0in\">\u00a0<\/p>\n<p style=\"margin-left:0in;text-align:justify\">Por fim, no lado do cliente, o ScoreMore usou estruturas JavaScript que s\u00e3o, na verdade, representa\u00e7\u00f5es de objetos dos v\u00e1rios tipos de documentos dispon\u00edveis: T\u00e9cnico, Jogador, Equipe, Jogo, etc. Os construtores de cada uma dessas estruturas de objeto pegam os resultados retornados da visualiza\u00e7\u00e3o e os mapeiam para as propriedades do objeto. Indo na outra dire\u00e7\u00e3o (armazenando no banco de dados a partir do aplicativo), o JSON.stringify \u00e9 usado para ir da estrutura do objeto para o formato JSON que o Couchbase est\u00e1 esperando para a opera\u00e7\u00e3o POST.<\/p>\n<pre style=\"text-align:left\">\r\n<code>1:  function Coach( id, email, hash, salt, rev ) {  \r\n2:    this.coachID = id;  \r\n3:    this.email = email;  \r\n4:    this.hash = hash;  \r\n5:    this.salt = salt;  \r\n6:    this.rev = rev;  \r\n7:    this.someCoachFunction = function() {\/\/Do Something  \r\n8:    }  \r\n9:    this.toJSON = function() {  \r\n10:      return JSON.stringify( {  \r\n11:        _id: this.coachID,  \r\n12:        email: this.email,  \r\n13:        hash: this.hash,  \r\n14:        salt: this.salt,  \r\n15:        _rev: this.rev  \r\n16:      });  \r\n17:    }  \r\n18:  }  \r\n<\/code><\/pre>\n<p style=\"margin-left:0in\">\u00a0<\/p>\n<p style=\"margin-left:0in\">Ou\u00e7a como <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/mobile\/\">Couchbase Mobile<\/a> forneceu \u00e0 equipe do ScoreMore as ferramentas tecnol\u00f3gicas necess\u00e1rias para atingir o sucesso na <a href=\"https:\/\/bit.ly\/blogcc13\">Caf\u00e9 no Couchbase:  ScoreMore com o Couchbase Mobile Blog<\/a> e n\u00e3o deixe de baixar o aplicativo que j\u00e1 est\u00e1 dispon\u00edvel para <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.scoremorebaseball.scoremore\">Android<\/a>, <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.scoremorebaseball.scoremore\">iOS<\/a>e <a href=\"https:\/\/appworld.blackberry.com\/webstore\/content\/59949558\/?countrycode=US&amp;lang=en\">BlackBerry.<\/a><\/p>\n<p>\u00a0<\/p>","protected":false},"excerpt":{"rendered":"<p>\u00a0 Gearing for Baseball season, ScoreMore Baseball recently just hit it out of the ball park with their app release across all the major mobile platforms.\u00a0 One of the key differentiators for the app is the use of Couchbase that [&hellip;]<\/p>","protected":false},"author":30,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8983],"class_list":["post-1908","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ScoreMore: Creating Baseball ORM and Views - 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\/scoremore-creating-document-objects-views\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ScoreMore: Creating Baseball ORM and Views\" \/>\n<meta property=\"og:description\" content=\"\u00a0 Gearing for Baseball season, ScoreMore Baseball recently just hit it out of the ball park with their app release across all the major mobile platforms.\u00a0 One of the key differentiators for the app is the use of Couchbase that [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/scoremore-creating-document-objects-views\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-09-01T17:41:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-07T11:52:09+00:00\" \/>\n<meta name=\"author\" content=\"William Hoang, Mobile Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"William Hoang, Mobile 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\/scoremore-creating-document-objects-views\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/\"},\"author\":{\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32\"},\"headline\":\"ScoreMore: Creating Baseball ORM and Views\",\"datePublished\":\"2015-09-01T17:41:17+00:00\",\"dateModified\":\"2023-09-07T11:52:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/\"},\"wordCount\":620,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/\",\"name\":\"ScoreMore: Creating Baseball ORM and Views - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-09-01T17:41:17+00:00\",\"dateModified\":\"2023-09-07T11:52:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#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\/scoremore-creating-document-objects-views\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ScoreMore: Creating Baseball ORM and Views\"}]},{\"@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\/425717456c198fdf9aaa5d7a6d42ad32\",\"name\":\"William Hoang, Mobile Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g\",\"caption\":\"William Hoang, Mobile Developer Advocate, Couchbase\"},\"description\":\"William was a Developer Advocate on the Mobile Engineering\/Developer Experience team at Couchbase. His love for coffee and code has transcended him into the world of mobile while appreciating the offline in-person experiences. Prior, William worked on the Developer Relations team over at Twitter, BlackBerry, and Microsoft while also having been a Software Embedded GPS engineer at Research In Motion. William graduated from McGill University in Electrical Software Engineering\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/william-hoang\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ScoreMore: Creating Baseball ORM and Views - 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\/scoremore-creating-document-objects-views\/","og_locale":"pt_BR","og_type":"article","og_title":"ScoreMore: Creating Baseball ORM and Views","og_description":"\u00a0 Gearing for Baseball season, ScoreMore Baseball recently just hit it out of the ball park with their app release across all the major mobile platforms.\u00a0 One of the key differentiators for the app is the use of Couchbase that [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/scoremore-creating-document-objects-views\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-09-01T17:41:17+00:00","article_modified_time":"2023-09-07T11:52:09+00:00","author":"William Hoang, Mobile Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"William Hoang, Mobile Developer Advocate, Couchbase","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/"},"author":{"name":"William Hoang, Mobile Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/425717456c198fdf9aaa5d7a6d42ad32"},"headline":"ScoreMore: Creating Baseball ORM and Views","datePublished":"2015-09-01T17:41:17+00:00","dateModified":"2023-09-07T11:52:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/"},"wordCount":620,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/","url":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/","name":"ScoreMore: Creating Baseball ORM and Views - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-09-01T17:41:17+00:00","dateModified":"2023-09-07T11:52:09+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/scoremore-creating-document-objects-views\/#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\/scoremore-creating-document-objects-views\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ScoreMore: Creating Baseball ORM and Views"}]},{"@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\/425717456c198fdf9aaa5d7a6d42ad32","name":"William Hoang, defensor do desenvolvedor m\u00f3vel, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/650445f1ea30314c4f3555dd680154f5","url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","caption":"William Hoang, Mobile Developer Advocate, Couchbase"},"description":"William foi um defensor do desenvolvedor na equipe de engenharia m\u00f3vel\/experi\u00eancia do desenvolvedor na Couchbase. Seu amor por caf\u00e9 e c\u00f3digo o levou ao mundo dos dispositivos m\u00f3veis, ao mesmo tempo em que apreciava as experi\u00eancias presenciais off-line. Antes disso, William trabalhou na equipe de rela\u00e7\u00f5es com desenvolvedores do Twitter, BlackBerry e Microsoft, al\u00e9m de ter sido engenheiro de GPS incorporado a software na Research In Motion. William se formou na McGill University em Engenharia El\u00e9trica de Software","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/william-hoang\/"}]}},"authors":[{"term_id":8983,"user_id":30,"is_guest":0,"slug":"william-hoang","display_name":"William Hoang, Mobile Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b912c9a97568a859697ee195432d0bd7cc3ed67d720ae2e6588b67313fa49e08?s=96&d=mm&r=g","author_category":"","last_name":"Hoang","first_name":"William","job_title":"","user_url":"","description":"William foi um defensor do desenvolvedor na equipe de engenharia m\u00f3vel\/experi\u00eancia do desenvolvedor na Couchbase. Seu amor por caf\u00e9 e c\u00f3digo o levou ao mundo dos dispositivos m\u00f3veis, ao mesmo tempo em que apreciava as experi\u00eancias presenciais off-line. Antes disso, William trabalhou na equipe de rela\u00e7\u00f5es com desenvolvedores do Twitter, BlackBerry e Microsoft, al\u00e9m de ter sido engenheiro de GPS incorporado a software na Research In Motion. William se formou na McGill University em Engenharia El\u00e9trica de Software"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1908","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\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1908"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1908\/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=1908"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1908"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1908"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1908"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}