> For the complete documentation index, see [llms.txt](https://medellin-js.gitbook.io/workshop-fullstack-js-developer/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://medellin-js.gitbook.io/workshop-fullstack-js-developer/backend/mongoose-js/conectando-a-mongosse.md).

# Conectando a Mongosse 🔌

Necesitamos obtener la cadena de conexión de nuestra base de datos alojada en [MongoDB Atlas](https://www.mongodb.com/download-center) y para eso vamos hacer los siguientes pasos:&#x20;

1. En el cluster creado con anterioridad, damos click en el botón `CONNET`.
2. Una vez en el modal, damos click sobre el enlace `Connect your Application`.
3. Se desplegara la información, correspondiente a nuestra cadena de conexión, copiamos la   linea de tu cluster que sera similar a esta. `mongodb+srv://admin:<password>@cluster0-ddb2f.mongodb.net/test?retryWrites=true&w=majority`

![](https://blobscdn.gitbook.com/v0/b/gitbook-28427.appspot.com/o/assets%2F-Lgyno4NC7rhy49BAEjN%2F-LhD74OLB73EJErZhons%2F-LhDBDlJ3c1rgDf9NGLu%2Fezgif.com-video-to-gif.gif?alt=media\&token=8e058e4e-f5ce-41d8-92be-d9a998cdfa0f)

En el archivo archivo `app.js`agregamos las siguientes lineas para generar la conexión a nuestra base de datos.

{% code title="app.js" %}

```javascript
const mongoose = require('mongoose');

const config = require('./config/environment');

// Connect to MongoDB
mongoose.connect(config.mongo.uri, { useNewUrlParser: true });
mongoose.connection.on('error', (err) => {
  console.error('Error', 'MongoDB connection error', {
    data: err,
    time: new Date().toISOString(),
  });
  process.exit(-1);
});
```

{% endcode %}

Finalmente nuestro archivo `app.js` debe quedar similar a este:

{% code title="app.js" %}

```javascript
/**
 * Main application file
 */
const express = require('express');
const http = require('http');
// New line
const mongoose = require('mongoose');

const expressConfig = require('./config/express');
const routeConfig = require('./routes');
// New Line
const config = require('./config/environment');

// Connect to MongoDB
mongoose.connect(config.mongo.uri, { useNewUrlParser: true });
mongoose.connection.on('error', (err) => {
  console.error('Error', 'MongoDB connection error', {
    data: err,
    time: new Date().toISOString(),
  });
  process.exit(-1);
});

const app = express();
const server = http.createServer(app);

expressConfig(app);
routeConfig(app);

// Start server
function startServer() {
  app.shoppingCartBK = server.listen(config.port, config.ip, () => {
    console.log(`Express server listening on ${config.port}, in ${app.get('env')} mode`);
  });
}

setImmediate(startServer);

// Expose app
module.exports = app;
```

{% endcode %}

Adicional necesitamos un archivo de configuración para nuestros ambientes de desarrollo, dentro de la carpeta  `config/environment`creamos el archivo `index.js` con las siguientes lineas de codigo.

{% code title="config/environment/index.js" %}

```javascript
/**
 * Default specific configuration
 * @author: Cristian Moreno Zulauaga <khriztianmoreno@gmail.com>
 */

const all = {
  env: process.env.NODE_ENV,

  // Server port
  port: process.env.PORT || 8080,

  // Server IP
  ip: process.env.IP || '127.0.0.1',

  // Should we populate the DB with sample data?
  seedDB: false,

  // Secret for session, you will want to change this and make it an environment variable
  secrets: {
    session: 'w0rksh0p-full5tack-j4v45cr1pt',
  },

  // MongoDB connection options
  mongo: {
    uri: process.env.MONGODB_URI || 'mongodb+srv://<username>:<password>@cluster0-ddb2f.mongodb.net/<database>?retryWrites=true&w=majority',
    db: 'workshop-fullstack-js',
  },
};

module.exports = all;
```

{% endcode %}

{% hint style="info" %}
**Nota:** En la linea 25 debemos agregar nuestra cadena de conexión obtenida anteriormente.&#x20;
{% endhint %}

Con estas configuraciones al levantar nuestro servidor, tendremos creado nuestros esquemas en [MongoDB Atlas](https://www.mongodb.com/download-center), listos para ser utilizados.&#x20;

### Repositorio: [Add the connection with MongoDB](https://github.com/colombia-dev/medjs-workshop-fullstack-js-backend/commit/1ca3c934a534ff338daec89a4b6973eb9a2a338b)
