{"id":253,"date":"2016-07-04T13:40:05","date_gmt":"2016-07-04T13:40:05","guid":{"rendered":"http:\/\/curioso.digital\/?p=253"},"modified":"2016-07-04T13:40:05","modified_gmt":"2016-07-04T13:40:05","slug":"desenvolvendo-uma-aplicacao-com-node-js-e-angularjs-parte-4","status":"publish","type":"post","link":"https:\/\/curiosodigital.com.br\/?p=253","title":{"rendered":"Desenvolvendo uma aplica\u00e7\u00e3o com Node.js e AngularJS \u2013 parte 4"},"content":{"rendered":"<p style=\"text-align:justify;\">Sauda\u00e7\u00f5es Leitores, dando continuidade ao nosso projeto, algo que n\u00e3o falei no post anterior \u00e9 a necessidade da instala\u00e7\u00e3o do MongoDB, ele \u00e9 um banco de dados NoSQL orientado a documentos, voc\u00ea pode obter mais informa\u00e7\u00f5es <a href=\"https:\/\/www.ibm.com\/developerworks\/community\/blogs\/fd26864d-cb41-49cf-b719-d89c6b072893\/entry\/3_raz_C3_B5es_para_usar_mongodb2?lang=en\">aqui<\/a> , e como instalar no Fedora <a href=\"http:\/\/ebasso.net\/wiki\/index.php\/MongoDB:_Instalando_o_MongoDB_no_Linux\">aqui<\/a>, mas se o seu sistema operacional n\u00e3o \u00e9 o Fedora e se voc\u00ea gostaria de entender mais sobre o MongoDB n\u00e3o se preocupe, existe muito material\u00a0na internet.<\/p>\n<p style=\"text-align:justify;\">Ap\u00f3s instalar e configurar o MongoDB, vamos inserir outros tr\u00eas m\u00f3dulos no Node.js para nos auxiliar no desenvolvimento (lembrando que no <a href=\"https:\/\/curioso.digital\/2016\/05\/09\/desenvolvendo-uma-aplicacao-com-node-js-e-angularjs-parte-3\/\">\u00faltimo artigo\u00a0<\/a> j\u00e1 instalamos o express). O primeiro deles \u00e9 o express-load (no shell digite o comando <i>npm<\/i> <i>install<\/i> <i>express-load<\/i> <i>&#8212;<\/i><i>save<\/i>) que serve para mapear diret\u00f3rios para carregar e injetar m\u00f3dulos dentro de uma vari\u00e1vel e evitar que sejam feitas diversas chamadas \u00e0 fun\u00e7\u00e3o require dentro dos controllers ou qualquer outro c\u00f3digo.<\/p>\n<p style=\"text-align:justify;\">O outro m\u00f3dulo \u00e9 o method-override (comando <i>npm<\/i> <i>install<\/i> <i>method-override<\/i> <i>&#8212;<\/i><i>save<\/i>) que permite que sigamos o padr\u00e3o RESTfull em nossas rotas utilizando os principais m\u00e9todos HTTP (GET, POST, PUT e DELETE).<\/p>\n<p style=\"text-align:justify;\">O \u00faltimo m\u00f3dulo que vamos instalar \u00e9 o mongoose (comando npm <i>install<\/i> <i>mongoose<\/i> <i>&#8212;<\/i><i>save<\/i>) que nos ir\u00e1 permitir utilizar o MongoDB com Node.js de uma forma muito simples.<\/p>\n<p style=\"text-align:justify;\">Agora que j\u00e1 estamos com tudo instalado e configurado, fa\u00e7a um clone da aplica\u00e7\u00e3o no seu eclipse, ela est\u00e1 no gitHub no seguinte endere\u00e7o: <a href=\"https:\/\/github.com\/gabrielpoa\/AmanhecerServer.git\">https:\/\/github.com\/gabrielpoa\/AmanhecerServer.git<\/a> .<\/p>\n<p style=\"text-align:justify;\">A aplica\u00e7\u00e3o estar\u00e1 instalada no OpenShift que \u00e9 uma plataforma de cloud da RedHat que permite fazer deploy de aplica\u00e7\u00f5es de forma gratuita, por isso voc\u00ea encontrar\u00e1 diversas vari\u00e1veis de ambiente que comecem com &#8220;OPENSHIFT_MONGODB&#8221;, voc\u00ea pode ignora-las pois elas n\u00e3o ir\u00e3o influenciar na aplica\u00e7\u00e3o rodando localmente. Tenha aten\u00e7\u00e3o para as configura\u00e7\u00f5es do MongoDB, que est\u00e3o previamente no c\u00f3digo na linha &#8220;var connection_string = &#8216;AdminAmanhecer:abcd1234@127.0.0.1:27017\/amanhecerdb&#8217;;&#8221; do arquivo &#8220;app.js&#8221;. Meu MongoDB est\u00e1 configurado para exigir autentica\u00e7\u00e3o para se conectar na base, isto est\u00e1 no arquivo &#8220;\/etc\/mongod.conf&#8221; na linha com a configura\u00e7\u00e3o &#8220;auth = true&#8221;, ent\u00e3o nas duas primeiras partes eu preciso informar o usu\u00e1rio que criei para administrar meu banco de dados e a senha separadas por dois pontos &lt;usu\u00e1rio&gt;:&lt;senha&gt; (exemplo: AdminAmanhecer:abcd1234), em seguida para separar as informa\u00e7\u00f5es do usu\u00e1rio das informa\u00e7\u00f5es de host eu coloco um @, o pr\u00f3ximo bloco \u00e9 composto do endere\u00e7o ip e a porta de conex\u00e3o &lt;ip&gt;:&lt;porta&gt; (exemplo: 127.0.0.1:27017) novamente separados por dois pontos, por fim uma barra seguido do nove do banco de dados (exemplo: \/amanhecerdb), sendo assim o\u00a0endere\u00e7o inteiro \u00e9 composto da seguinte forma\u00e7\u00e3o &lt;usu\u00e1rio&gt;:&lt;senha&gt;@&lt;ip&gt;:&lt;porta&gt;\/&lt;nome_banco&gt; .<\/p>\n<p style=\"text-align:justify;\">Acredito que com estes detalhes ser\u00e1 poss\u00edvel testar a aplica\u00e7\u00e3o localmente, minha dica \u00e9 utilizar o aplicativo para o navegor Chrome chamado &#8220;REST Console&#8221; e j\u00e1 existem programados tr\u00eas servi\u00e7os REST&#8217;s (que iremos explorar no pr\u00f3ximo artigo):<\/p>\n<p style=\"text-align:justify;\">1) M\u00e9todo POST para incluir um usu\u00e1rio novo &#8211; Link http:\/\/localhost:3000\/usuarios deve ser passado no body da mensagem http a seguinte estrutura:<\/p>\n<p style=\"text-align:justify;\">{<br \/>\n&#8220;nome&#8221;:&#8221;nome do usuario&#8221;,<br \/>\n&#8220;email&#8221;:&#8221;email@dousario.com&#8221;,<br \/>\n&#8220;senha&#8221;:&#8221;senha do usuario&#8221;<br \/>\n}<\/p>\n<p style=\"text-align:justify;\">Lembrando que o Content-Type deve ser &#8220;application\/json&#8221;.<\/p>\n<p style=\"text-align:justify;\">2) M\u00e9todo GET para buscar o nome dos usu\u00e1rios cadastrados \u2013 Link http:\/\/localhost:3000\/usuarios.<\/p>\n<p style=\"text-align:justify;\">3) Met\u00f3do POST para logon \u2013 Link http:\/\/localhost:3000\/usuarios\/logon deve ser passado no body da mensagem http a seguinte estrutura:<\/p>\n<p style=\"text-align:justify;\">{<br \/>\n&#8220;email&#8221;:&#8221;email@dousario.com&#8221;,<br \/>\n&#8220;senha&#8221;:&#8221;senha do usuario&#8221;<br \/>\n}<\/p>\n<p style=\"text-align:justify;\">Lembrando que o Content-Type deve ser &#8220;application\/json&#8221;.<\/p>\n<p style=\"text-align:justify;\">Bem Leitores, j\u00e1 temos muita coisa para configurar e testar, no pr\u00f3ximo artigo vamos explorar um pouco mais do c\u00f3digo da nossa aplica\u00e7\u00e3o. Precisando de ajuda \u00e9 s\u00f3 escrever, at\u00e9 a pr\u00f3xima.<\/p>\n<p>Siga-me no Twitter: <a class=\"DashboardProfileCard-screennameLink u-linkComplex u-linkClean\" href=\"https:\/\/twitter.com\/curioso_dgtal\">@<span class=\"u-linkComplex-target\">curioso_dgtal<\/span><\/a><\/p>\n<p>Participe do nosso <a href=\"https:\/\/groups.google.com\/forum\/#%21forum\/curiosodigital\">grupo no Google<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sauda\u00e7\u00f5es Leitores, dando continuidade ao nosso projeto, algo que n\u00e3o falei no post anterior \u00e9 a necessidade da instala\u00e7\u00e3o do MongoDB, ele \u00e9 um banco de dados NoSQL orientado a documentos, voc\u00ea pode obter mais informa\u00e7\u00f5es aqui , e como instalar no Fedora aqui, mas se o seu sistema operacional n\u00e3o \u00e9 o Fedora e&hellip;<\/p>\n","protected":false},"author":2,"featured_media":263,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[15,27,31,33,40],"_links":{"self":[{"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=\/wp\/v2\/posts\/253"}],"collection":[{"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=253"}],"version-history":[{"count":0,"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=\/wp\/v2\/posts\/253\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=\/"}],"wp:attachment":[{"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=253"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=253"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/curiosodigital.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=253"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}