I am writing a simple CMS with Node.js and Sequelize.js. I want to get database information from user like Wordpress and create database connection. I wrote the codes below for this but my problem is application don't start before database connection.
Controllers
// Get Database Setup Page
exports.getSetup = (req, res) => {
return res.render("pages/account/setup");
};
// Post Database Information
exports.postSetup = (req, res) => {
// Set posted values as ENV Variable
setEnvValue("DB_NAME", req.body.name);
setEnvValue("DB_USERNAME", req.body.username);
setEnvValue("DB_PASSWORD", req.body.password);
setEnvValue("DB_HOST", req.body.host);
return res.redirect("/login");
};
// Error occurs here. Application don't start before database connection.
exports.getLogin = async (req, res) => {
const general = await Models.General.findByPk(1);
// Check Authenticate
if (req.session.isAuth) return res.redirect("/admin");
// Render Page
return res.render("pages/account/login", {
title: "Login",
general: general,
});
};
.env File After Post
DB_NAME="db-name"
DB_USERNAME="root"
DB_PASSWORD="password"
DB_HOST="localhost"
Database Connection file
I use this in several places like defining models.
const Sequelize = require("sequelize");
const sequelize = new Sequelize(
process.env.DB_NAME,
process.env.DB_USERNAME,
process.env.DB_PASSWORD,
{
dialect: "mysql",
host: process.env.DB_HOST,
}
);
module.exports = sequelize;