hello i am trying to use typeorm-store by save session / express-session
const sessionRepository = getRepository(Session); // db should be connected.
app.use(
session({
secret: process.env.COOKIE_SECRET || "",
resave: false,
saveUninitialized: false,
store: new TypeormStore({ repository: sessionRepository }),
})
);
to use getRepository(), db connection should be connected before
so i must connect db before setting app’s session
how can i do that?
this is my code
const app: Express = express();
const sessionConfig = async () => {
try {
console.log("✅DB connected");
const connection = await createConnection();
const sessionRepository = connection.getRepository(Session);
app.use(
session({
secret: process.env.COOKIE_SECRET || "",
resave: false,
saveUninitialized: false,
store: new TypeormStore({ repository: sessionRepository }),
})
);
} catch (error) {
console.log(`❗ Error: ${error}`);
}
};
sessionConfig();
app.use(express.static(path.join(__dirname, "../../client/build")));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.get("*", (req, res) => {
console.log();
return res.sendFile(path.join(__dirname, "../../client/build/index.html"));
});
app.use("/api", rootRouter);
export default app;
//controller login logic
export const postTrainerLogin: customMiddleware = async (req, res) => {
const { username, password } = req.body;
const userRepository = getRepository(User);
const user = await userRepository.findOne({
where: [{ name: username }],
});
if (!user) {
return res.sendStatus(400);
}
//@ts-ignore
const passwordOk = await bcrypt.compare(password, user.password);
if (!passwordOk) {
return res.sendStatus(400);
}
//@ts-ignore
req.session.loggedIn = true;
//@ts-ignore
req?.session?.user = user;
return res.status(200).json(user);
}
i made async function to connect db and set session before setting router
i expected my app working as
- db connect
- set session
- router
and i expect i can get session on my browser after login
but i cannot
in briefly
problem: icannot get my session after login
what i want to do solve it
connect db before set express server app
