Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Erro ao Conectar ao Banco MongoDB

Olá Flávio,

Ao realizar o passo Cordão umbilical servidor e banco - 9, realizei toda a configuração exatamente como está no exercício, mas estou recebendo um erro que não consigo decifrá-lo.

Percebi que para testar o mongoDB você executa ele na mesma pasta que está o projeto do Alurapic, com o comando "mongo".

Mas na minha instalação, só consigo executar o banco na pasta C:\mongoDB\Bin, que foi conforme o passo-a-passo da primeira explicação que ocorreu lá atrás.

Bom, pode ser que isso tenha relação, mas abaixo eu coloco o log do erro que está ocorrendo para mim. (Obs: Serviço do MongoDB está funcionando corretamente.)

//log do erro.

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'start' ]
2 info using npm@2.14.7
3 info using node@v4.2.3
4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info prestart alurapic@1.0.0
6 info start alurapic@1.0.0
7 verbose unsafe-perm in lifecycle true
8 info alurapic@1.0.0 Failed to exec start script
9 verbose stack Error: alurapic@1.0.0 start: `node server.js`
9 verbose stack Exit status 1
9 verbose stack     at EventEmitter.<anonymous> (C:\Program Files\nodejs\node_modules\npm\lib\utils\lifecycle.js:214:16)
9 verbose stack     at emitTwo (events.js:87:13)
9 verbose stack     at EventEmitter.emit (events.js:172:7)
9 verbose stack     at ChildProcess.<anonymous> (C:\Program Files\nodejs\node_modules\npm\lib\utils\spawn.js:24:14)
9 verbose stack     at emitTwo (events.js:87:13)
9 verbose stack     at ChildProcess.emit (events.js:172:7)
9 verbose stack     at maybeClose (internal/child_process.js:818:16)
9 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:211:5)
10 verbose pkgid alurapic@1.0.0
11 verbose cwd C:\Users\ccaio\Desktop\alurapic
12 error Windows_NT 10.0.10240
13 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "start"
14 error node v4.2.3
15 error npm  v2.14.7
16 error code ELIFECYCLE
17 error alurapic@1.0.0 start: `node server.js`
17 error Exit status 1
18 error Failed at the alurapic@1.0.0 start script 'node server.js'.
18 error This is most likely a problem with the alurapic package,
18 error not with npm itself.
18 error Tell the author that this fails on your system:
18 error     node server.js
18 error You can get their info via:
18 error     npm owner ls alurapic
18 error There is likely additional logging output above.
19 verbose exit [ 1, true ]

Server.js

var http = require('http');
var app = require('./config/express');
require('./config/database')('localhost/alurapic');

http.createServer(app).listen(3000, function(){
    console.log('Servidor Iniciado');    
});

database.js

module.exports = function(uri) {

    var mongoose = require('mongoose');

    mongoose.connect('mongodb://' + uri)

    mongoose.connection.on('connected', function() {
        console.log('Conectado ao MongoDB')
    });

    mongoose.connection.on('error', function(error) {
        console.log('Erro na conexão: ' + error);
    });    

    mongoose.connection.on('disconnected', function() {
        console.log('Desconectado do MongoDB')
    });

    process.on('SIGINT', function() {
        mongoose.connection.close(function() {
            console.log('Aplicação terminada, conexão fechada')
            process.exit(0);
        });

    })
};

Obrigado!

4 respostas
solução!

O comando mongo é o cliente em linha de comando do MongoDB e pode ser executado de qualquer pasta. Infelizmente a equipe do MongoDB marginaliza a plataforma Windows e ainda não há um instalador 100% nesta plataforma. Porém, mesmo o mongo não estando no path sua aplicação tem que ser capaz de se conectar ao mongoDB pelo Mongoose.

Você rodou o comando npm install dentro da pasta alurapic?

Qual foi o comando que você executou e recebeu a mensagem de erro? Pode ficar tranquilo, que tá tudo funcionando direitinho e outros alunos já terminara o treinamento sem problema. Só precisamos descobrir o que houve.

Então, esse erro começou a ocorrer após eu fazer a database.js, especificamente quando eu conecto no mongoose.connect('mongodb://' + uri)

A instalação eu fiz corretamente utilizando o npm install, apareceu algumas mensagens de erro quando instalei o Mongoose, mas como você disse no video, ele tenta instalar de outras formas.

Olhe meu package como está

{
  "name": "alurapic",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.14.1",
    "consign": "^0.1.2",
    "express": "^4.13.3",
    "mongoose": "^4.3.1"
  }
}

Creio que o problema seja o próprio MongoDB, tem como desinstalar e instalar ele novamente ? Assim coloco o erro que ocorre na instalação.

Flávio, ao reiniciar a máquina, o MongoDB retorna seu funcionamento, vamos ver se ele vai funcionar ao longo do dia rs.

Uma outra dúvida rápida, eu gostaria de utilizar a MEAN mas com SQL Server ao invés de MongoDB, sei que é um banco no-sql recomendado, mas a maioria das integrações que irei utilizar já usam o SQL Server, então eu não tenho muita escolha rs.

Qual o módulo que você recomenda para utilizar essa conexão? Ao pesquisar encontrei muitos, as vezes para essa situação já tenha algum módulo parecido.

Obrigado!

Olá Alan, ou você faz na mão como é ensinado no curso de Node.js aqui no Alura ou você pode tentar a sorte com o

http://docs.sequelizejs.com/en/latest/

É bem conhecido , mas eu tive problemas na época com uma documentação ruim, deve ter melhorado.