<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Renato Rebouças</title>
    <description>The latest articles on DEV Community by Renato Rebouças (@renato_zero6).</description>
    <link>https://dev.to/renato_zero6</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F224472%2Fdeb94958-756a-49bd-b84f-1a04bb21d241.png</url>
      <title>DEV Community: Renato Rebouças</title>
      <link>https://dev.to/renato_zero6</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/renato_zero6"/>
    <language>en</language>
    <item>
      <title>Criando o primeiro app com expo router.</title>
      <dc:creator>Renato Rebouças</dc:creator>
      <pubDate>Sun, 05 Mar 2023 22:20:30 +0000</pubDate>
      <link>https://dev.to/renato_zero6/criando-o-primeiro-app-com-expo-router-1ok7</link>
      <guid>https://dev.to/renato_zero6/criando-o-primeiro-app-com-expo-router-1ok7</guid>
      <description>&lt;p&gt;Para iniciarmos, vamos começar criando nosso projeto expo da forma badrão selecionando a a opção de black page como na imagem a baixo.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;OBS: estou ultilizando a versão 1.2.1 do react-router no momento que o tutorial foi escrito.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbm553qhhcf4h25qjd0wa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbm553qhhcf4h25qjd0wa.png" alt="terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Projeto criado vamos iniciar a configuração do nosso projeto, abra ele no seu editor de preferência e seu terminal. No terminal executar os seguintes comandos:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npx expo &lt;span class="nb"&gt;install &lt;/span&gt;expo-router react-native-safe-area-context react-native-screens expo-linking expo-constants expo-status-bar


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npx expo &lt;span class="nb"&gt;install &lt;/span&gt;react-native-web@~0.18.10 react-dom@18.2.0


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Enquanto o pacote é instalado vamos criar um arquivo chamado &lt;code&gt;index.js&lt;/code&gt; ou &lt;code&gt;index.ts&lt;/code&gt; caso seu projeto seja em typescript e ao abrir o arquivo colar o seguinte código.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;expo-router/entry&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Agora no seu &lt;code&gt;package.json&lt;/code&gt; alterar o main dele e apontar pro arquivo criado a cima.&lt;/p&gt;

&lt;p&gt;No &lt;code&gt;app.json&lt;/code&gt; colocar o codigo a baixo.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"expo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"scheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"myapp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="nl"&gt;"web"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"bundler"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"metro"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Na documentação oficial é dito para adicionar o &lt;code&gt;resolutions&lt;/code&gt; caso use o &lt;code&gt;yarn&lt;/code&gt; ou &lt;code&gt;overrides&lt;/code&gt; caso use o &lt;code&gt;npm&lt;/code&gt;, como nem sempre uso um padrão eu adicionei ambos.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="nl"&gt;"resolutions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"metro"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.73.7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"metro-resolver"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.73.7"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"overrides"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"metro"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.73.7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"metro-resolver"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0.73.7"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Agora o ultimo passo antes de executarmos nosso projeto é alterar o &lt;code&gt;babal.config,js&lt;/code&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;presets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;babel-preset-expo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="c1"&gt;// NOTE: `expo-router/babel` is a temporary extension to `babel-preset-expo`.&lt;/span&gt;
      &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;expo-router/babel&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Para executarmos a primeira vez vamos ultilizar o &lt;code&gt;npm&lt;/code&gt; para podermos limpar o cache e ter mais segurança na execução:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

npx expo start &lt;span class="nt"&gt;--clear&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Se apareceu essa tela quer dizer que a configuração foi um sucesso.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7c8g286go1kr3cicjzk8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7c8g286go1kr3cicjzk8.png" alt="Tela de sucesso"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nesse ponto observe as pastras do seu projeto antes e depois de clicar no botão que a tela do app está pedindo para tocar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86x3ffy6j1ilw8k6y4x3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86x3ffy6j1ilw8k6y4x3.png" alt="Arquivos antes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note que o proprio expo criou uma pasta chamada &lt;code&gt;app&lt;/code&gt; e dentro dela o arquivo &lt;code&gt;index.js&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmssyld1wm0887gc5e0aq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmssyld1wm0887gc5e0aq.png" alt="Arquivos depois"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora basta editar seu &lt;code&gt;app/index.js&lt;/code&gt; e criar seu app com esse novo pacote que promete executar as rotas de um app como se fosse na web.&lt;/p&gt;



&lt;h6&gt;
  
  
  Referências:
&lt;/h6&gt;

&lt;p&gt;&lt;a href="https://expo.github.io/router/docs/" rel="noopener noreferrer"&gt;Doc&lt;/a&gt;&lt;/p&gt;

</description>
      <category>expo</category>
      <category>exporouter</category>
      <category>reactnative</category>
      <category>exporoute</category>
    </item>
    <item>
      <title>Introdução ao NEO4J</title>
      <dc:creator>Renato Rebouças</dc:creator>
      <pubDate>Sat, 28 Nov 2020 01:13:42 +0000</pubDate>
      <link>https://dev.to/renato_zero6/introducao-ao-neo4j-4mbh</link>
      <guid>https://dev.to/renato_zero6/introducao-ao-neo4j-4mbh</guid>
      <description>&lt;h2&gt;
  
  
  O que é o Neo4j?
&lt;/h2&gt;

&lt;p&gt;O &lt;a href="https://neo4j.com/"&gt;neo4j&lt;/a&gt; é um banco NoSql que utiliza a teoria de grafos e o &lt;a href="https://en.wikipedia.org/wiki/Cypher_(query_language)"&gt;cypher&lt;/a&gt; como sua linguagem oficial ao invés do &lt;code&gt;sql&lt;/code&gt;, para poder criar um modelo menos genérico que os bancos relacionais, ou seja nele não precisamos de um design de tabelas para podermos popular o banco.&lt;/p&gt;

&lt;h2&gt;
  
  
  Definições
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Nó (node)
&lt;/h3&gt;

&lt;p&gt;É responsável por guardar os dados de uma entidade, podendo ter mais de uma propriedade, mas podendo ter apenas um &lt;code&gt;label&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Relação (relationship)
&lt;/h3&gt;

&lt;p&gt;A relação fica responsável de gravar a relação de um &lt;code&gt;nó&lt;/code&gt; com o outro, por exemplo um autor pode ter uma relação com o livro.&lt;/p&gt;

&lt;h2&gt;
  
  
  Explicando principais comandos
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; &lt;b&gt;MATCH&lt;/b&gt;:  usado para dizer qual nó iremos buscar, pode se dizer que é o comando &lt;code&gt;SELECT&lt;/code&gt; muito usado num banco relacional.&lt;/li&gt;
&lt;li&gt; &lt;b&gt; CREATE &lt;/b&gt;: responsável por criar nós e relacionamentos entre eles.&lt;/li&gt;
&lt;li&gt; &lt;b&gt; MERGE &lt;/b&gt;:  utilizado para criar nós em relações quando eles não existem.&lt;/li&gt;
&lt;li&gt; &lt;b&gt; SET &lt;/b&gt;: muda as propriedades de uma relação ou nó.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;RETURN&lt;/b&gt;:  traz os resultados das consultas.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;REMOVE&lt;/b&gt;: remove uma propriedade de um nó ou relação. Também serve para remover um label do nó.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;WITH&lt;/b&gt;: serve para expor o resultado de um &lt;code&gt;MATCH&lt;/code&gt; anterior para um próximo &lt;code&gt;MATCH&lt;/code&gt; ou talvez, para um &lt;code&gt;RETURN&lt;/code&gt; um pouco mais complexo. É a chave para quebrar patterns complexos em queries menores possivelmente mais rápidas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Exemplos de uso dos comandos Cypher
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cria nó sem label
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Retorna todos os nós
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (no) 
return no 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cria nó com valor nome
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create ({nome: "Doriana"}) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Retorna nó com o valor especificado
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match(no {nome: "Doriana"}  ) 
return no
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Deleta o nó da variável, ou seja deleta tudo!
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (no)
delete no
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cria um label para um nó
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create (:Pessoa {nome: "Asdrubal"}) 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Filtra pelo um label especifico
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (n:Pessoa) return n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Filtra pelo label pessoa e seta a quantidade de dados que se trás da consulta
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (n:Pessoa) 
return n 
limit 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Criando um nó com uma aresta
&lt;/h3&gt;

&lt;p&gt;A aresta é representada pelo sinal de  &lt;code&gt;--&amp;gt;&lt;/code&gt;  dessa forma se cria uma aresta sem label,&lt;br&gt;
no exemplo á baixo criamos uma aresta com label   &lt;code&gt;-[:Label]-&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create(:Livro 
{titulo: "Alice"})
 -[:Autor]-&amp;gt; (:Pessoa {nome: "Lewis Caroll"})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Criando uma query para associar uma aresta
&lt;/h3&gt;

&lt;p&gt;Na query a baixo criamos duas variáveis  e associamos uma aresta a elas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (asd:Pessoa {nome: 'Asdrubal'}) 
match (al:Livro {titulo: 'Alice'})
create(asd) -[:Leu]-&amp;gt; (al)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Associando todas pessoas a um livro
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa) 
match (cc:Livro {titulo: 'Crime e Castigo'})
create(p) -[:Leu]-&amp;gt; (cc)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create (:Pessoa {nome: "Lindaura"})
create (:Pessoa {nome: "Alcebiades"})
match (asd:Pessoa {nome: "Asdrubal"})
match (lind:Pessoa {nome: "Lindaura"})
match (guia:Livro {titulo: "Guia do mochileiro"})
match (hobit:Livro {titulo: "O Hobit"})
create (asd)-[:Leu]-&amp;gt; (guia)
create (asd)-[:Leu]-&amp;gt; (hobit)
create (lind)-[:Leu]-&amp;gt; (guia)
create (lind)-[:Leu]-&amp;gt; (hobit)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Filtra as pessoas que já leram um livro x
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa)
-[:Leu]-&amp;gt; (g:Livro {titulo:"Guia do mochileiro"})
return p
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Filtro com duas condições num mesmo &lt;code&gt;Match&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (h:Livro{titulo: "O Hobit"})
&amp;lt;-[:Leu]-(p:Pessoa)
-[:Leu]-&amp;gt; (g:Livro {titulo:"Guia do mochileiro"})
return p
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pegando todo mundo que leu Lewis Caroll
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa)
-[:Leu]-&amp;gt;(:Livro)-[:Autor]-&amp;gt;
(:Pessoa {nome: "Lewis Caroll"})
return p
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Filtrando e trazendo livro e pessoa
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa)-[:Leu]-&amp;gt;
(l:Livro {titulo: "Crime e Castigo"})
return p,l
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa)-[:Leu]-&amp;gt;(l:Livro)
&amp;lt;-[:Autor]-(n:Pessoa {nome:"Alcebiades"})
return p,l
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usando um count na query
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa)-[:Leu]-&amp;gt;(l:Livro)
&amp;lt;-[:Autor]-(n:Pessoa {nome:"Alcebiades"})
return count(p)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa)-[:Leu]-&amp;gt;(l:Livro)
&amp;lt;-[:Autor]-(n:Pessoa {nome:"Alcebiades"})
return count(distinct p)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Método merge
&lt;/h3&gt;

&lt;p&gt;O &lt;code&gt;merge&lt;/code&gt; verifica se a propriedade foi criada, se não foi criada ele cria, caso já exista você pode acrescentar o &lt;code&gt;on&lt;/code&gt; e dizer oque le deve fazer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa)-[:Leu]-&amp;gt;(l:Livro)
&amp;lt;-[:Autor]-(n:Pessoa {nome:"Alcebiades"})
merge (p)-[lei:Leitor]-&amp;gt;(n)
on create set lei.livros=1
on match set lei.livros=lei.livros+1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;merge
   (l:Cidade {local: 'Cidade Ademar, São Paulo'})-[:Previsao]-&amp;gt;(t:Tempo {data: '15/02/2021',
    hora: '13:16',
    infoAtual: 'Parcialmente nublado',
    infoTemp: 'Tempestades isoladas com raios e trovões',
    maxTemp: '28°C',
    minTemp: '18°C',
    temperatura: '28°C'}) 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse exemplo a baixo é um filtro trazendo a nova propriedade criada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa)-[:Leu]-&amp;gt;(l:Livro)
&amp;lt;-[:Autor]-(n:Pessoa {nome:"Alcebiades"})
match (p)-[lei:Leitor]-&amp;gt;(d)
return p,l,lei,n
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Usando where e alterando dados de uma pessoa
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;match (p:Pessoa) where ID(p) = 10
set p.nome = 'João P'
return *
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;h6&gt;
  
  
  Referências:
&lt;/h6&gt;

&lt;p&gt;&lt;a href="https://medium.com/neo4j-primeiros-passos/neo4j-primeiros-passos-ee4e319e33bb"&gt;NEO4J — Primeiros passos&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/accendis-tech/uma-gentil-introdu%C3%A7%C3%A3o-ao-uso-de-banco-de-dados-orientados-a-grafos-com-neo4j-ca148df2d352"&gt;Uma gentil introdução ao uso de banco de dados orientados a grafos com Neo4j&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://neo4j.com/docs/2.1/cypher-refcard/"&gt;Documentação neo4j&lt;/a&gt;&lt;/p&gt;

</description>
      <category>neo4j</category>
      <category>beginners</category>
      <category>database</category>
      <category>nosql</category>
    </item>
    <item>
      <title>Teste backend pokémon pt 2</title>
      <dc:creator>Renato Rebouças</dc:creator>
      <pubDate>Mon, 23 Nov 2020 21:59:49 +0000</pubDate>
      <link>https://dev.to/renato_zero6/teste-backend-pokemon-pt-2-3eom</link>
      <guid>https://dev.to/renato_zero6/teste-backend-pokemon-pt-2-3eom</guid>
      <description>&lt;p&gt;Teste back-end pokémon pt 2&lt;/p&gt;

&lt;p&gt;Bom no ultimo artigo, finalizamos a estrutura padrão do nosso projeto, pra quem não viu vou deixar o link, pois é essencial ter lido ele para avançar nesse artigo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/renato_zero6/teste-backend-pokemon-pt-1-2nlc"&gt;Teste backend pokémon pt 1 - DEV&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vou partir do principio que você já leu o ultimo artigo e seu projeto está igual o meu, agora vamos iniciar nossa estrutura de rotas para podermos criar nossa primeira controler.&lt;/p&gt;

&lt;p&gt;Na raiz do seu projeto crie um arquivo &lt;code&gt;routes.js&lt;/code&gt;, nele vamos colocar o código a baixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bodyParser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;body-parser&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// usamos o body-parser para lidar com as requisiçoes json&lt;/span&gt;
  &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bodyParser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;


   &lt;span class="c1"&gt;// o primeiro parametro fa função get é a rota que iremos &lt;/span&gt;
   &lt;span class="c1"&gt;// chamar na url o segundo já é uma função anônima, mas&lt;/span&gt;
   &lt;span class="c1"&gt;// nada impede de ser passado uma função  já criada&lt;/span&gt;
  &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boas-vindas a API Pokémon GO&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vamos voltar agora para nosso primeiro arquivo criado o &lt;code&gt;index.js&lt;/code&gt; nele vamos informar o express que iremos usar nosso arquivo de rotas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// infromamos o path do nosse arquivo de rotas&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;routes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./routes&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//nosso arquivo ficara assim logo depois de instanciar as &lt;/span&gt;
&lt;span class="c1"&gt;//depêndencias nele&lt;/span&gt;


&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cors&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// disponibiliza as rotas no arquivo base&lt;/span&gt;
&lt;span class="nf"&gt;routes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Servidor rodando na porta: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora criaremos nossa primeira controller para isso crie uma pasta chamada &lt;code&gt;controller&lt;/code&gt; e dentro dela um arquivo chamado &lt;code&gt;CsvController.js&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Antes vamos instalar uma depencia para manipularmos arquivos csv ou xlsx, para isso digitamos em nosso terminal o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i node-xlsx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Voltando na nossa controller vamos criar uma classe e importar a biblioteca instalada&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;xlsx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node-xlsx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ApiController&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// nessa linha exportamos nossa classe como módulo para que &lt;/span&gt;
&lt;span class="c1"&gt;// ela possa ser acessada de outros lugares&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ApiController&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro da nossa classe iremos criar uma função chamada &lt;code&gt;importCsv&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;importCsv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// essa variavel indica o local que esta o arquivo csv, deixei&lt;/span&gt;
  &lt;span class="c1"&gt;// o meu de exemplo mais depois do ${__dirname} passe o seu caminho&lt;/span&gt;
  &lt;span class="c1"&gt;// vou deixar logo a baixo o repositório novamente com o xlsx&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;plan&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;xlsx&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/../api/PokemonGo.xlsx`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

   &lt;span class="c1"&gt;// Agora que ja temos nosso arquivo mapeado basta percorrermos ele&lt;/span&gt;
   &lt;span class="c1"&gt;// com um map e criarmos um objeto novo pois os nomes no arquivo&lt;/span&gt;
   &lt;span class="c1"&gt;// contem espaços e caracteres especiais depios batas tertornar ele &lt;/span&gt;
  &lt;span class="c1"&gt;// e termos acesso deles na variavel readPlan&lt;/span&gt;

    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;readPlan&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;plan&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

      &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;dados&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;row&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;pokedexNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;imgName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;generation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;evolutionStage&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;evolved&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;familyID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;crossGen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;type1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;type2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;weather1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;weather2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;staTotal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;atk&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;def&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;sta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;legendary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;spawns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;regional&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;raidable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;hatchable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;Shiny&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;nest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;26&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;new&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;27&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;notGettable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;28&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;futureEvolve&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;CP40&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="na"&gt;CP39&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
      &lt;span class="p"&gt;};&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;dados&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
   &lt;span class="c1"&gt;// deletamos o primeir registro do objeto pois ele só &lt;/span&gt;
   &lt;span class="c1"&gt;//contem o nome das colunas da planilha&lt;/span&gt;
    &lt;span class="k"&gt;delete&lt;/span&gt; &lt;span class="nx"&gt;readPlan&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

    &lt;span class="c1"&gt;// Agora finalmente retornamos os dados para api&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;readPlan&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://github.com/renatoReboucas/teste-backend-pokemon"&gt;Repositótio do projeto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nosso código ainda não esta funcionando pois não criamos uma rota para acessar ele, para isso vamos voltar no nosso arquivo que usamos para definilas &lt;code&gt;routes.js&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// dentro dele vamos importar nossa controller primeiro&lt;/span&gt;
&lt;span class="c1"&gt;// a minha está no caminho a baixo, mais subistitua por um a sua escolha&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;CsvController&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../Controller/CsvController&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;// agora nosso arquivo de rotas ficara assim&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bodyParser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
  &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boas-vindas a API Pokémon GO&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="c1"&gt;// nessa linha adicionaremos nossa nossa nova rota,&lt;/span&gt;
  &lt;span class="c1"&gt;// indicando que ela deverá usar a controller criada anteriormente&lt;/span&gt;
  &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/import&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;CsvController&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;importCsv&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora basta chamarmos nossa rota, bom como essa é uma rota do tipo get podemos chamar ela pelo navegador pelo endereço &lt;a href="https://localhost:3333"&gt;https://localhost:3333&lt;/a&gt; , porem eu recomendo o uso do &lt;a href="https://insomnia.rest/download/"&gt;insomnia&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A imagem abaixo é o resultado da nossa requisição.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0mlyy46u9iv871fa8mtr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F0mlyy46u9iv871fa8mtr.png" alt="Alt Text" width="800" height="491"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Teste backend pokémon pt 1</title>
      <dc:creator>Renato Rebouças</dc:creator>
      <pubDate>Fri, 06 Nov 2020 13:58:16 +0000</pubDate>
      <link>https://dev.to/renato_zero6/teste-backend-pokemon-pt-1-2nlc</link>
      <guid>https://dev.to/renato_zero6/teste-backend-pokemon-pt-1-2nlc</guid>
      <description>&lt;p&gt;Teste back-end pokémon pt 1&lt;/p&gt;

&lt;p&gt;Depois de ter acompanhado toda a introdução sobre o método de estudo no &lt;a href="https://dev.to/renato_zero6/usando-testes-de-vagas-para-estudar-3dpg"&gt;ultimo artigo&lt;/a&gt;, que se consiste no desafio de criar uma API com dados de Pokémon, nós vamos colocar em prática o que aprendemos!&lt;/p&gt;

&lt;p&gt;Nós vamos iniciar o teste criando o servidor, e para este processo nós vamos utilizar o express. Após este primeiro passo nós vamos criar uma pasta, você pode escolher o nome de sua preferência, eu vou chamar a minha de:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;teste_backend_pokemon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora nós vamos acessar acessar a pasta criada pelo terminal, caso você não saiba basta fazer assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /home/projetos/....
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O código acima é um exemplo da ultilização do comando &lt;code&gt;cd&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Agora que já estamos na raiz vamos iniciar o npm nela com o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init ou npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O comando pode ser como o citado se você quiser preencher todas as perguntas ou podemos passar o &lt;code&gt;-y&lt;/code&gt; assim aceitamos todas as solicitações e ele cria automaticamente.&lt;/p&gt;

&lt;p&gt;Com isso ira aparecer um arquivo chamado &lt;code&gt;package.json&lt;/code&gt; nele contem todas as informações sobre nossa aplicação, incluindo as dependências.&lt;/p&gt;

&lt;p&gt;Após este passo vamos instalar as dependências nescessárias para o momento, então digite o comando abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i nodemon body-parse cors express
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora podemos começar a parte mais importante que é codar 🔥&lt;/p&gt;

&lt;p&gt;Para essa etapa crie um arquivo chamado &lt;code&gt;index.js&lt;/code&gt;, dentro dele vamos colocar o seguinte código:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// importamos o express&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cors&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// importamos o cors&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; &lt;span class="c1"&gt;// agora instanciamos o express na variável app &lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cors&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; &lt;span class="c1"&gt;// informamos que vamos usar o cors junto ao express&lt;/span&gt;

&lt;span class="c1"&gt;// aqui falamos que o express ira entender o formato json&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt; 

&lt;span class="c1"&gt;// criamos a variavel que ira receber a porta do nosso servidor&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3333&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 

&lt;span class="c1"&gt;// inicializamos nosso servidor&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Servidor rodando na porta: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois de criar o &lt;code&gt;index.js&lt;/code&gt; e digitar o código acima vamos inicializar o nosso servidor com o comando a&lt;br&gt;
seguir, para isso você deve estar com o seu terminal na raiz do projeto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nodemon index.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assim, vamos ver o seguinte resultado:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh75nc20ojbgksb4mde5r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fh75nc20ojbgksb4mde5r.png" alt="Resultado terminal" width="691" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E com isso já teremos a estrutura padrão do nosso projeto!! 😄🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Usando testes de vagas para estudar</title>
      <dc:creator>Renato Rebouças</dc:creator>
      <pubDate>Tue, 03 Nov 2020 18:47:05 +0000</pubDate>
      <link>https://dev.to/renato_zero6/usando-testes-de-vagas-para-estudar-3dpg</link>
      <guid>https://dev.to/renato_zero6/usando-testes-de-vagas-para-estudar-3dpg</guid>
      <description>&lt;p&gt;Bom recentemente venho buscando maneiras de estudar para me aprofundar mais nos meus conhecimentos e descobri um &lt;a href="https://github.com/felipefialho/frontend-challenges"&gt;Github&lt;/a&gt; com vários repositórios de testes para vagas de emprego, de certa forma é bom estudar assim, pois você vê como seu nível está e ao mesmo tempo pratica vendo como estaria para o mercado de trabalho.&lt;/p&gt;

&lt;p&gt;Pra mim em particular tem sido muito vantajoso de estudar assim além de me preparar para poder aplicar em vagas eu acabo me forçando a correr atrás de certo conteúdo para poder concluir os testes.&lt;/p&gt;

&lt;p&gt;Por exemplo recentemente fiz um teste para &lt;a href="https://reactnative.dev/"&gt;react-native&lt;/a&gt; com &lt;a href="https://firebase.google.com/?hl=pt-br"&gt;firebase&lt;/a&gt;, vou resumir o teste era para criar um login usando firebase, eu nunca havia usado ele até o momento do teste, então fui forçado a garimpar a internet atrás de conteúdo sobre o banco da google. &lt;/p&gt;

&lt;p&gt;Demorei um bom tempo para concluir o teste por conta de estar aprendendo algo novo mas no final eu conclui o teste e aprendi muito com isso, infelizmente não passei na vaga mais agreguei conhecimento em algo novo realizando o teste.&lt;/p&gt;

&lt;p&gt;Por isso decidi estudar aplicando para vagas de emprego, depois de ver um repositório do &lt;a href="https://github.com/m7he4rt/alguma-coisa-de-pokemon#conhecimentos-necess%C3%A1rios-godmode"&gt;m7he4rt&lt;/a&gt; no qual ela fazia um teste da &lt;a href="https://github.com/RedFoxTech"&gt;RedFox&lt;/a&gt; no qual eu decidi realizar o mesmo teste para iniciar meus estudos, aos poucos vou escrevendo sobre o teste, mas caso queira acompanhar mais de perto confira o meu &lt;a href="https://github.com/renatoReboucas/teste-backend-pokemon"&gt;repositório&lt;/a&gt;, bom espero que a idéia seja útil para vocês.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Primeiros passos com o editor Vi parte: 1</title>
      <dc:creator>Renato Rebouças</dc:creator>
      <pubDate>Sat, 21 Mar 2020 21:11:20 +0000</pubDate>
      <link>https://dev.to/renato_zero6/primeiros-passos-com-o-editor-vi-parte-1-5fa7</link>
      <guid>https://dev.to/renato_zero6/primeiros-passos-com-o-editor-vi-parte-1-5fa7</guid>
      <description>&lt;p&gt;Recentemente, eu vi que tinha que aprender a usar o editor vi, pois estava editando arquivos grandes com o nano e como só tinha o bom e velho terminal para editar esses arquivos e estava com muitas dificuldades porque editar arquivos grandes ou o nano se torna mais difícil , entre outros problemas.&lt;/p&gt;

&lt;p&gt;Vamos começar com a navegação no modo de edição de texto igual a qualquer editor de texto, utilizado como setas do teclado para isso.&lt;/p&gt;

&lt;p&gt;Bom, vamos ao básico como eu faço para inserir coisas no arquivo? Isso é muito simples, basta abrir a tecla "i" e começar a digitar a partir de onde você estiver no texto.&lt;/p&gt;

&lt;p&gt;E para sair da inserção de texto como eu faço? Basta abrir a tecla "esc" e vc voltara para uma navegação normal.&lt;/p&gt;

&lt;p&gt;Também temos a tecla "a" que começa a inserir o texto na posição a seguir de onde você estiver.&lt;/p&gt;

&lt;p&gt;Feito nossa alteração como salvamos o arquivo? Digitamos o ": w" e, em seguida, damos um valor para confirmar e pronto o arquivo salvo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Feppnwccpnmfuz74qb8e9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Feppnwccpnmfuz74qb8e9.png" alt="Alt Text" width="800" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas e se você quiser sair e agora como fazer? É possível fazer isso sem desligar o computador?&lt;/p&gt;

&lt;p&gt;É uma resposta simm, para isso usa o ": q", também pode combinar os comandos e executar várias ações em conjunto ou executar um combo com o kkk, vamos usar o exemplo de salvar e sair.&lt;/p&gt;

&lt;p&gt;ex: :wq&lt;/p&gt;

&lt;p&gt;Sim com o :wq podemos salvar e sair do arquivo.&lt;br&gt;
chegamos ao fim da primeira parte do artigo, fazendo o proximo nos seguintes dias de quarentena. 😅&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
