# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://medellin-js.gitbook.io/workshop-fullstack-js-developer/backend/mongoose-js/conectando-a-mongosse.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
