forked from graphql-boilerplates/react-fullstack-graphql
-
Notifications
You must be signed in to change notification settings - Fork 1
/
connection.js
37 lines (29 loc) · 899 Bytes
/
connection.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/*
* Source: https://medium.com/@vimal.selvam/deploying-graphql-server-on-heroku-3e19dbdf4f51
*/
const mongoose = require("mongoose");
let connection = null;
const connectToDB = async () => {
mongoose.Promise = global.Promise;
let mongoUserCredentials = "";
if (process.env.MONGO_USER && process.env.MONGO_PASSWORD) {
mongoUserCredentials = `${process.env.MONGO_USER}:${
process.env.MONGO_PASSWORD
}@`;
}
const MONGO_URL = process.env.MONGO_URL || "localhost:27017";
const DB_NAME = process.env.MONGO_DB_NAME || "testgraphql";
const MONGO_CONNECTION_STRING = `mongodb://${mongoUserCredentials}${MONGO_URL}/${DB_NAME}`;
await mongoose.connect(MONGO_CONNECTION_STRING);
connection = mongoose;
};
const getDB = () => {
if (!connection) {
throw new Error("Call connectToDB first");
}
return connection;
};
module.exports = {
connectToDB,
getDB
};