{"id":3187,"date":"2017-04-06T10:36:30","date_gmt":"2017-04-06T17:36:30","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3187"},"modified":"2023-06-19T03:02:33","modified_gmt":"2023-06-19T10:02:33","slug":"fakeit-series-working-existing-data","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-working-existing-data\/","title":{"rendered":"FakeIt S\u00e9rie 4 de 5: Trabalhando com dados existentes"},"content":{"rendered":"<p>Aaron Benton \u00e9 um arquiteto experiente, especializado em solu\u00e7\u00f5es criativas para desenvolver aplicativos m\u00f3veis inovadores. Ele tem mais de 10 anos de experi\u00eancia em desenvolvimento de pilha completa, incluindo ColdFusion, SQL, NoSQL, JavaScript, HTML e CSS. Atualmente, Aaron \u00e9 Arquiteto de Aplicativos da Shop.com em Greensboro, Carolina do Norte, e \u00e9 um <a href=\"https:\/\/developer.couchbase.com\/experts-and-champions\">Campe\u00e3o da comunidade do Couchbase<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2974\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg\" alt=\"Aaron Benton\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-150x150.jpg 150w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-768x768.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-65x65.jpg 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-50x50.jpg 50w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-20x20.jpg 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000.jpg 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h3><strong>FakeIt S\u00e9rie 4 de 5: Trabalhando com dados existentes<\/strong><\/h3>\n<p>At\u00e9 agora, em nosso <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener noreferrer\">Falsa<\/a><\/u>\u00a0vimos como podemos <u><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-generating-fake-data\/\" target=\"_blank\" rel=\"noopener noreferrer\">Gerar dados falsos<\/a><\/u>, <u><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-shared-data-dependencies\/\" target=\"_blank\" rel=\"noopener noreferrer\">Compartilhar dados e depend\u00eancias<\/a><\/u>e usar <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-3-5-lean-models-through-definitions\/\">Defini\u00e7\u00f5es para modelos menores<\/a>. Hoje vamos examinar o \u00faltimo recurso importante da FakeIt, que \u00e9 trabalhar com dados existentes por meio de entradas.<\/p>\n<p>Raramente, como desenvolvedores, temos a vantagem de trabalhar em aplicativos novos, pois nossos dom\u00ednios s\u00e3o, na maioria das vezes, compostos por diferentes bancos de dados e aplicativos legados. Como estamos modelando e criando novos aplicativos, precisamos fazer refer\u00eancia e usar esses dados existentes. \u00a0<u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener noreferrer\">Falsa<\/a><\/u>\u00a0permite que voc\u00ea forne\u00e7a dados existentes aos seus modelos por meio de arquivos JSON, CSV ou CSON. Esses dados s\u00e3o expostos como uma vari\u00e1vel de entrada em cada uma das fun\u00e7\u00f5es *run e *build dos modelos.<\/p>\n<h3><strong>Modelo de usu\u00e1rios<\/strong><\/h3>\n<p>Come\u00e7aremos com o nosso modelo users.yaml que atualizamos em nossa \u00faltima atualiza\u00e7\u00e3o <u><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-generating-fake-data\/\" target=\"_blank\" rel=\"noopener noreferrer\">publica\u00e7\u00e3o recente<\/a><\/u>\u00a0para usar <strong>Endere\u00e7o <\/strong>e <strong>Telefone<\/strong>\u00a0defini\u00e7\u00f5es.<\/p>\n<pre class=\"lang:default decode:true\">name:\u00a0Users\r\ntype:\u00a0object\r\nkey:\u00a0_id\r\ndata:\r\n\u00a0 min:\u00a01000\r\n\u00a0 max:\u00a02000\r\nproperties:\r\n\u00a0 _id:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document id built by the prefix \"user_\"\u00a0and the users id\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0\"`user_${this.user_id}`\"\r\n\u00a0 doc_type:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document type\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 value:\u00a0\"user\"\r\n\u00a0 user_id:\r\n\u00a0 \u00a0 type:\u00a0integer\r\n\u00a0 \u00a0 description:\u00a0An auto-incrementing number\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0document_index\r\n\u00a0 first_name:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users first name\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.name.firstName()\r\n\u00a0 last_name:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users last name\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.name.lastName()\r\n\u00a0 username:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The username\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.internet.userName()\r\n\u00a0 password:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users password\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.internet.password()\r\n\u00a0 email_address:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users email address\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.internet.email()\r\n\u00a0 created_on:\r\n\u00a0 \u00a0 type:\u00a0integer\r\n\u00a0 \u00a0 description:\u00a0An epoch time of when the user was created\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0new Date(faker.date.past()).getTime()\r\n\u00a0 addresses:\r\n\u00a0 \u00a0 type:\u00a0object\r\n\u00a0 \u00a0 description:\u00a0An object containing the home and work addresses for the user\r\n\u00a0 \u00a0 properties:\r\n\u00a0 \u00a0 \u00a0 home:\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The users home address\r\n\u00a0 \u00a0 \u00a0 \u00a0 schema:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0$ref: '#\/definitions\/Address'\r\n\u00a0 \u00a0 \u00a0 work:\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The users work address\r\n\u00a0 \u00a0 \u00a0 \u00a0 schema:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0$ref: '#\/definitions\/Address'\r\n\u00a0 main_phone:\r\n\u00a0 \u00a0 description:\u00a0The users main phone number\r\n\u00a0 \u00a0 schema:\r\n\u00a0 \u00a0 \u00a0$ref: '#\/definitions\/Phone'\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0|\r\n\u00a0 \u00a0 \u00a0 \u00a0delete this.main_phone.type\r\n\u00a0 \u00a0 \u00a0 \u00a0return this.main_phone\r\n\u00a0 additional_phones:\r\n\u00a0 \u00a0 type:\u00a0array\r\n\u00a0 \u00a0 description:\u00a0The users additional phone numbers\r\n\u00a0 \u00a0 items:\r\n\u00a0 \u00a0 \u00a0$ref: '#\/definitions\/Phone'\r\n\u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 min:\u00a01\r\n\u00a0 \u00a0 \u00a0 \u00a0 max:\u00a04\r\ndefinitions:\r\n\u00a0 Phone:\r\n\u00a0 \u00a0 type:\u00a0object\r\n\u00a0 \u00a0 properties:\r\n\u00a0 \u00a0 \u00a0 type:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The phone type\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.random.arrayElement([ 'Home', 'Work', 'Mobile', 'Other'\u00a0])\r\n\u00a0 \u00a0 \u00a0 phone_number:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The phone number\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.phone.phoneNumber().replace(\/[^0-9]+\/g, '')\r\n\u00a0 \u00a0 \u00a0 extension:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The phone extension\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0chance.bool({ likelihood: 30\u00a0}) ? chance.integer({ min: 1000, max: 9999\u00a0}) : null\r\n\u00a0 Address:\r\n\u00a0 \u00a0 type:\u00a0object\r\n\u00a0 \u00a0 properties:\r\n\u00a0 \u00a0 \u00a0 address_1:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The address 1\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0`${faker.address.streetAddress()} ${faker.address.streetSuffix()}`\r\n\u00a0 \u00a0 \u00a0 address_2:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The address 2\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0chance.bool({ likelihood: 35\u00a0}) ? faker.address.secondaryAddress() : null\r\n\u00a0 \u00a0 \u00a0 locality:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The city \/ locality\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.address.city()\r\n\u00a0 \u00a0 \u00a0 region:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The region \/ state \/ province\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.address.stateAbbr()\r\n\u00a0 \u00a0 \u00a0 postal_code:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The zip code \/ postal code\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.address.zipCode()\r\n\u00a0 \u00a0 \u00a0 country:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The country code\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.address.countryCode()<\/pre>\n<p>&nbsp;<\/p>\n<p>Atualmente, nossos <strong>Endere\u00e7o<\/strong>\u00a0est\u00e1 gerando um pa\u00eds aleat\u00f3rio. E se o nosso site de com\u00e9rcio eletr\u00f4nico oferecer suporte apenas a um pequeno subconjunto dos 195 pa\u00edses? Digamos que suportemos seis pa\u00edses para come\u00e7ar: US, CA, MX, UK, ES, DE. Poder\u00edamos atualizar a propriedade country das defini\u00e7\u00f5es para obter um elemento de matriz aleat\u00f3rio:<\/p>\n<p><em>(Para fins de brevidade, as outras propriedades foram deixadas de fora da defini\u00e7\u00e3o do modelo)<\/em><\/p>\n<pre class=\"lang:default decode:true\">...\r\n\u00a0 \u00a0 \u00a0 country:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The country code\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.random.arrayElement(['US', 'CA', 'MX', 'UK', 'ES', 'DE']);<\/pre>\n<p>Embora isso funcione, e se tivermos outros modelos que dependam dessas mesmas informa\u00e7\u00f5es de pa\u00eds, teremos que duplicar essa l\u00f3gica. Podemos fazer a mesma coisa criando um arquivo countries.json e adicionando uma propriedade inputs \u00e0 propriedade data, que pode ser um caminho absoluto ou relativo para a nossa entrada. Quando o modelo for gerado, nosso arquivo countries.json ser\u00e1 exposto a cada uma das fun\u00e7\u00f5es de cria\u00e7\u00e3o de modelos por meio do argumento inputs como inputs.countries<\/p>\n<p><em>(Para fins de brevidade, as outras propriedades foram deixadas de fora da defini\u00e7\u00e3o do modelo)<\/em><\/p>\n<pre class=\"lang:default decode:true\">name:\u00a0Users\r\ntype:\u00a0object\r\nkey:\u00a0_id\r\ndata:\r\n\u00a0 min:\u00a01000\r\n\u00a0 max:\u00a02000\r\n\u00a0 inputs:\u00a0.\/countries.json\r\nproperties:\r\n...\r\ndefinitions:\r\n...\r\n\u00a0 \u00a0 \u00a0 country:\r\n\u00a0 \u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 \u00a0 description:\u00a0The country code\r\n\u00a0 \u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.random.arrayElement(inputs.countries);\r\n\r\ncountries.json\r\n\r\n[\r\n\u00a0\"US\",\r\n\u00a0\"CA\",\r\n\u00a0\"MX\",\r\n\u00a0\"UK\",\r\n\u00a0\"ES\",\r\n\u00a0\"DE\"\r\n]<\/pre>\n<p>Ao alterar uma linha existente e adicionar outra linha no modelo, fornecemos dados existentes ao nosso modelo de Usu\u00e1rios. Ainda podemos gerar um pa\u00eds aleat\u00f3rio, com base nos pa\u00edses que nosso aplicativo suporta. Vamos testar nossas altera\u00e7\u00f5es usando o seguinte comando:<\/p>\n<pre class=\"lang:default decode:true\">fakeit console --count 1 models\/users.yaml\r\n\r\n<\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/04\/blog4-example1.gif\" alt=\"blog4 example1\" \/><\/p>\n<h3><strong>Modelo de produtos<\/strong><\/h3>\n<p>Nosso aplicativo de com\u00e9rcio eletr\u00f4nico est\u00e1 usando um sistema separado para categoriza\u00e7\u00e3o. Precisamos expor esses dados aos nossos produtos gerados aleatoriamente para que possamos usar informa\u00e7\u00f5es de categoria v\u00e1lidas. Come\u00e7aremos com o products.yaml que definimos na se\u00e7\u00e3o <u><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-shared-data-dependencies\/\" target=\"_blank\" rel=\"noopener noreferrer\">FakeIt S\u00e9rie 2 de 5: Dados compartilhados e depend\u00eancias<\/a><\/u>\u00a0postar.<\/p>\n<pre class=\"lang:default decode:true\">products.yaml\r\n\r\nname:\u00a0Products\r\ntype:\u00a0object\r\nkey:\u00a0_id\r\ndata:\r\n\u00a0 min:\u00a04000\r\n\u00a0 max:\u00a05000\r\nproperties:\r\n\u00a0 _id:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document id\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0`product_${this.product_id}`\r\n\u00a0 doc_type:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document type\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 value:\u00a0product\r\n\u00a0 product_id:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0Unique identifier representing a specific product\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.random.uuid()\r\n\u00a0 price:\r\n\u00a0 \u00a0 type:\u00a0double\r\n\u00a0 \u00a0 description:\u00a0The product price\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0chance.floating({ min: 0, max: 150, fixed: 2\u00a0})\r\n\u00a0 sale_price:\r\n\u00a0 \u00a0 type:\u00a0double\r\n\u00a0 \u00a0 description:\u00a0The product price\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0|\r\n\u00a0 \u00a0 \u00a0 \u00a0let sale_price = 0;\r\n\u00a0 \u00a0 \u00a0 \u00a0if (chance.bool({ likelihood: 30 })) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0sale_price = chance.floating({ min: 0, max: this.price * chance.floating({ min: 0, max: 0.99, fixed: 2 }), fixed: 2 });\r\n\u00a0 \u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0 \u00a0 \u00a0return sale_price;\r\n\u00a0 display_name:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0Display name of product.\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.commerce.productName()\r\n\u00a0 short_description:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0Description of product.\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.lorem.paragraphs(1)\r\n\u00a0 long_description:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0Description of product.\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.lorem.paragraphs(5)\r\n\u00a0 keywords:\r\n\u00a0 \u00a0 type:\u00a0array\r\n\u00a0 \u00a0 description:\u00a0An array of keywords\r\n\u00a0 \u00a0 items:\r\n\u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 min:\u00a00\r\n\u00a0 \u00a0 \u00a0 \u00a0 max:\u00a010\r\n\u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.random.word()\r\n\u00a0 availability:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The availability status of the product\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0|\r\n\u00a0 \u00a0 \u00a0 \u00a0let availability = 'In-Stock';\r\n\u00a0 \u00a0 \u00a0 \u00a0if (chance.bool({ likelihood: 40 })) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0availability = faker.random.arrayElement([ 'Preorder', 'Out of Stock', 'Discontinued' ]);\r\n\u00a0 \u00a0 \u00a0 \u00a0}\r\n\u00a0 \u00a0 \u00a0 \u00a0return availability;\r\n\u00a0 availability_date:\r\n\u00a0 \u00a0 type:\u00a0integer\r\n\u00a0 \u00a0 description:\u00a0An epoch time of when the product is available\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.date.recent()\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0new Date(this.availability_date).getTime()\r\n\u00a0 product_slug:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The URL friendly version of the product name\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0faker.helpers.slugify(this.display_name).toLowerCase()\r\n\u00a0 category:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0Category for the Product\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.commerce.department()\r\n\u00a0 category_slug:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The URL friendly version of the category name\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0faker.helpers.slugify(this.category).toLowerCase()\r\n\u00a0 image:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0Image URL representing the product.\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.image.image()\r\n\u00a0 alternate_images:\r\n\u00a0 \u00a0 type:\u00a0array\r\n\u00a0 \u00a0 description:\u00a0An array of alternate images for the product\r\n\u00a0 \u00a0 items:\r\n\u00a0 \u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 \u00a0 min:\u00a00\r\n\u00a0 \u00a0 \u00a0 \u00a0 max:\u00a04\r\n\u00a0 \u00a0 \u00a0 \u00a0 build:\u00a0faker.image.image()<\/pre>\n<p>Nossos dados de categorias existentes foram fornecidos em formato CSV.<\/p>\n<pre class=\"lang:default decode:true\">categories.csv\r\n\r\n\"category_id\",\"category_name\",\"category_slug\"\r\n23,\"Electronics\",\"electronics\"\r\n1032,\"Office Supplies\",\"office-supplies\"\r\n983,\"Clothing &amp; Apparel\",\"clothing-and-apparel\"\r\n483,\"Movies, Music &amp; Books\",\"movies-music-and-books\"\r\n3023,\"Sports &amp; Fitness\",\"sports-and-fitness\"\r\n4935,\"Automotive\",\"automotive\"\r\n923,\"Tools\",\"tools\"\r\n5782,\"Home Furniture\",\"home-furniture\"\r\n9783,\"Health &amp; Beauty\",\"health-and-beauty\"\r\n2537,\"Toys\",\"toys\"\r\n10,\"Video Games\",\"video-games\"\r\n736,\"Pet Supplies\",\"pet-supplies\"<\/pre>\n<p>Agora precisamos atualizar nosso modelo products.yaml para usar esses dados existentes.<\/p>\n<p><em>(Para fins de brevidade, as outras propriedades foram deixadas de fora da defini\u00e7\u00e3o do modelo)<\/em><\/p>\n<pre class=\"lang:default decode:true\">name:\u00a0Products\r\ntype:\u00a0object\r\nkey:\u00a0_id\r\ndata:\r\n\u00a0 min:\u00a04000\r\n\u00a0 max:\u00a05000\r\n\u00a0 inputs:\r\n\u00a0 \u00a0 -\u00a0.\/categories.csv\r\n\u00a0 pre_build:\u00a0globals.current_category = faker.random.arrayElement(inputs.categories);\r\nproperties:\r\n...\r\n\u00a0 category_id:\r\n\u00a0 \u00a0 type:\u00a0integer\r\n\u00a0 \u00a0 description:\u00a0The Category ID for the Product\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0globals.current_category.category_id\r\n\u00a0 category:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0Category for the Product\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0globals.current_category.category_name\r\n\u00a0 category_slug:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The URL friendly version of the category name\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0globals.current_category.category_slug\r\n...<\/pre>\n<p>H\u00e1 alguns aspectos a serem observados sobre como atualizamos nosso modelo products.yaml.<\/p>\n<ul>\n<li>inputs: \u00e9 definido como uma matriz e n\u00e3o como uma cadeia de caracteres. Embora estejamos usando apenas uma \u00fanica entrada, voc\u00ea pode fornecer quantos arquivos de entrada forem necess\u00e1rios para o seu modelo.<\/li>\n<li>Uma fun\u00e7\u00e3o pre_build \u00e9 definida na raiz do modelo. Isso ocorre porque n\u00e3o podemos pegar um elemento de matriz aleat\u00f3rio para cada uma de nossas tr\u00eas propriedades de categoria, pois os valores n\u00e3o corresponderiam. Toda vez que um documento individual for gerado para o nosso modelo, essa fun\u00e7\u00e3o pre_build ser\u00e1 executada primeiro.<\/li>\n<li>Cada uma de nossas fun\u00e7\u00f5es de constru\u00e7\u00e3o de propriedades de categoria faz refer\u00eancia \u00e0 vari\u00e1vel global definida pela fun\u00e7\u00e3o pre_build em nosso modelo.<\/li>\n<\/ul>\n<p>Podemos testar nossas altera\u00e7\u00f5es usando o seguinte comando:<\/p>\n<pre class=\"lang:default decode:true\">fakeit console --count 1 models\/products.yaml<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5689 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/04\/blog4-example2-compressor.gif\" alt=\"blog4 example2\" width=\"800\" height=\"443\" \/><\/p>\n<h3><strong>Conclus\u00e3o<\/strong><\/h3>\n<p>A capacidade de trabalhar com dados existentes \u00e9 um recurso extremamente poderoso do <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener noreferrer\">Falsa<\/a><\/u>. Ele pode ser usado para manter a integridade de documentos gerados aleatoriamente para trabalhar com o sistema existente e pode at\u00e9 mesmo ser usado para transformar dados existentes e import\u00e1-los para o Couchbase Server.<\/p>\n<h4><strong>Pr\u00f3ximo<\/strong><\/h4>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/\">FakeIt Series 5 de 5: Desenvolvimento m\u00f3vel r\u00e1pido com o Sync-Gateway<\/a><\/li>\n<\/ul>\n<h4><strong>Anterior<\/strong><\/h4>\n<ul>\n<li><u><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-generating-fake-data\/\" target=\"_blank\" rel=\"noopener noreferrer\">FakeIt S\u00e9rie 1 de 5: Gera\u00e7\u00e3o de dados falsos<\/a><\/u><\/li>\n<li><u><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-shared-data-dependencies\/\" target=\"_blank\" rel=\"noopener noreferrer\">FakeIt S\u00e9rie 2 de 5: Dados compartilhados e depend\u00eancias<\/a><\/u><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-3-5-lean-models-through-definitions\/\">S\u00e9rie FakeIt 3 de 5: Modelos Lean por meio de defini\u00e7\u00f5es<\/a><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2966 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/brand.devCommChampionLogo.champion.FINAL_-300x300.png\" alt=\"Couchbase Champion\" width=\"300\" height=\"300\" \/><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/community\/community-writers-program\/\"><em>Esta postagem faz parte do Programa de Reda\u00e7\u00e3o da Comunidade Couchbase<\/em><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>O FakeIt permite que voc\u00ea forne\u00e7a dados existentes aos seus modelos por meio de arquivos JSON, CSV ou CSON. Esses dados s\u00e3o expostos como uma vari\u00e1vel de entrada em cada uma das fun\u00e7\u00f5es *run e *build dos modelos.<\/p>","protected":false},"author":53,"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,1819],"tags":[1883,1884,1885],"ppma_author":[9026],"class_list":["post-3187","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-data-modeling","tag-data-modelling","tag-document-patterns","tag-fakeit"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FakeIt Series 4 of 5: Working with Existing Data - 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\/fakeit-series-working-existing-data\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FakeIt Series 4 of 5: Working with Existing Data\" \/>\n<meta property=\"og:description\" content=\"FakeIt allows you to provide existing data to your models through JSON, CSV or CSON files. This data is exposed as an inputs variable in each of a models *run and *build functions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-working-existing-data\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-06T17:36:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-19T10:02:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg\" \/>\n<meta name=\"author\" content=\"Laura Czajkowski, Developer Community Manager, 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=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/\"},\"author\":{\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220\"},\"headline\":\"FakeIt Series 4 of 5: Working with Existing Data\",\"datePublished\":\"2017-04-06T17:36:30+00:00\",\"dateModified\":\"2023-06-19T10:02:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/\"},\"wordCount\":721,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"data modelling\",\"document patterns\",\"fakeit\"],\"articleSection\":[\"Couchbase Server\",\"Data Modeling\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/\",\"name\":\"FakeIt Series 4 of 5: Working with Existing Data - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-04-06T17:36:30+00:00\",\"dateModified\":\"2023-06-19T10:02:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#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\/fakeit-series-working-existing-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FakeIt Series 4 of 5: Working with Existing Data\"}]},{\"@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\/5f1a0ece4e644bc8c037686fbc8f3220\",\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"caption\":\"Laura Czajkowski, Developer Community Manager, Couchbase\"},\"description\":\"Laura Czajkowski is the Snr. Developer Community Manager at Couchbase overseeing the community. She\u2019s responsible for our monthly developer newsletter.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/laura-czajkowski\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"S\u00e9rie FakeIt 4 de 5: Trabalhando com dados existentes - 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\/fakeit-series-working-existing-data\/","og_locale":"pt_BR","og_type":"article","og_title":"FakeIt Series 4 of 5: Working with Existing Data","og_description":"FakeIt allows you to provide existing data to your models through JSON, CSV or CSON files. This data is exposed as an inputs variable in each of a models *run and *build functions.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-working-existing-data\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-04-06T17:36:30+00:00","article_modified_time":"2023-06-19T10:02:33+00:00","og_image":[{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg","type":"","width":"","height":""}],"author":"Laura Czajkowski, Developer Community Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Laura Czajkowski, Developer Community Manager, Couchbase","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/"},"author":{"name":"Laura Czajkowski, Developer Community Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220"},"headline":"FakeIt Series 4 of 5: Working with Existing Data","datePublished":"2017-04-06T17:36:30+00:00","dateModified":"2023-06-19T10:02:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/"},"wordCount":721,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["data modelling","document patterns","fakeit"],"articleSection":["Couchbase Server","Data Modeling"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/","url":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/","name":"S\u00e9rie FakeIt 4 de 5: Trabalhando com dados existentes - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-04-06T17:36:30+00:00","dateModified":"2023-06-19T10:02:33+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-working-existing-data\/#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\/fakeit-series-working-existing-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FakeIt Series 4 of 5: Working with Existing Data"}]},{"@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\/5f1a0ece4e644bc8c037686fbc8f3220","name":"Laura Czajkowski, gerente da comunidade de desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409","url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","caption":"Laura Czajkowski, Developer Community Manager, Couchbase"},"description":"Laura Czajkowski \u00e9 a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela \u00e9 respons\u00e1vel pelo nosso boletim informativo mensal para desenvolvedores.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/laura-czajkowski\/"}]}},"authors":[{"term_id":9026,"user_id":53,"is_guest":0,"slug":"laura-czajkowski","display_name":"Laura Czajkowski, Developer Community Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","author_category":"","last_name":"Czajkowski","first_name":"Laura","job_title":"","user_url":"","description":"Laura Czajkowski \u00e9 a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela \u00e9 respons\u00e1vel pelo nosso boletim informativo mensal para desenvolvedores."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3187","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\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=3187"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3187\/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=3187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=3187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=3187"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=3187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}