# Erro com o mongo DB usando o mongoose. #nodejs #aplicaçõesWebReal-timeComNode.js

**URL:** https://forum.casadocodigo.com.br/t/erro-com-o-mongo-db-usando-o-mongoose-nodejs-aplicacoeswebreal-timecomnode-js/1848
**Category:** Livros
**Tags:** node.js
**Created:** [Abril 13, 2021, 7:21pm UTC](https://forum.casadocodigo.com.br/t/erro-com-o-mongo-db-usando-o-mongoose-nodejs-aplicacoeswebreal-timecomnode-js/1848 "2021-04-13T19:21:05Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![moigamijunior](https://yyz1.discourse-cdn.com/flex029/user_avatar/forum.casadocodigo.com.br/moigamijunior/32/14734_2.png) [@moigamijunior](https://forum.casadocodigo.com.br/u/moigamijunior)
#### Post date: [Abril 13, 2021, 7:21pm UTC](https://forum.casadocodigo.com.br/t/erro-com-o-mongo-db-usando-o-mongoose-nodejs-aplicacoeswebreal-timecomnode-js/1848/1 "2021-04-13T19:21:05Z")

</div>

Alguem pode me ajudar? Capítulo 7 do livro: Aplicações Web Real-time com Node.js.

Como se o script estivesse lendo o models antes de abrir a conexão – o que não deveria ser um problema visto do mongoose – e não encontra o método model().

Aparentemente não está abrindo a conexão. Já experimentei outro script e funcionou – com o tratamento de erro, caso não se conectasse –, porém, se deveria aparecer o DB no mongo só de abrir uma conexão, não está aparecendo.

Repito o detalhe: não aparece a db ‘ntalk’ no mongodb:

> mongo  
> show dbs

* * *

Meu terminal:

> ntalk@0.0.1 start  
> node app.js

/Library/WebServer/Documents/node-estudos/ntalk/app.js:38  
db.model(‘usuarios’, usuario);  
^

TypeError: db.model is not a function  
at Object. (/Library/WebServer/Documents/node-estudos/ntalk/app.js:38:8)  
at Module.\_compile (internal/modules/cjs/loader.js:1063:30)  
at Object.Module.\_extensions…js (internal/modules/cjs/loader.js:1092:10)  
at Module.load (internal/modules/cjs/loader.js:928:32)  
at Function.Module.\_load (internal/modules/cjs/loader.js:769:14)  
at Function.executeUserEntryPoint [as runMain] (internal/modules/run\_main.js:72:12)  
at internal/main/run\_main\_module.js:17:47

* * *

app.js

```
const express = require('express');
const path = require('path');
const http = require('http');
const socketIo = require('socket.io');
const consign = require('consign');
const bodyParser = require('body-parser');
const cookie = require('cookie');
const expressSession = require('express-session');
const methodOverride = require('method-override');
const mongoose = require('mongoose');
const bluebird = require('bluebird');
const config = require('./config');
const error = require('./middlewares/error');

mongoose.Promise = bluebird;
global.db = mongoose.connect('mongodb://127.0.0.1:27017/ntalk');

const app = express();
const server = http.Server(app);
const io = socketIo(server);
const store = new expressSession.MemoryStore();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(expressSession({
  store,
  name: config.sessionKey,
  secret: config.sessionSecret
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(methodOverride('_method'));
app.use(express.static(path.join(__dirname, 'public')));

io.use((socket, next) => {
  const cookieData = socket.request.headers.cookie;
  const cookieObj = cookie.parse(cookieData);
  const sessionHash = cookieObj[config.sessionKey] || '';
  const sessionId = sessionHash.split('.')[0].slice(2);
  store.all((err, sessions) => {
    const currentSession = sessions[sessionId];
    if (err || !currentSession) {
      return next(new Error('Acesso negado!'));
    }
    socket.handshake.session = currentSession;
    return next();
  });
});

consign({})
  .include('models')
  .then('controllers')
  .then('routes')
  .then('events')
  .into(app, io)
;

app.use(error.notFound);
app.use(error.serverError);

server.listen(3000, () => console.log('Ntalk no ar'));

```

* * *

usuario.js (models)

```
const Schema = require("mongoose").Schema;

module.exports = () => {
    const contato = Schema({
        nome: String,
        email: String
    });
    const usuario = Schema({
        nome: {
            type: String,
            required: true
        },
        email: {
            type: String,
            required: true,
            index: {unique: true}
        },
        contatos: [contato]
    });
    return db.model('usuarios', usuario);
}

```
