جواد
10 ماه پیش توسط جواد مطرح شد
4 پاسخ

ذخیره sessionدر دیتابیس اس‌کیوال با فریمورک express.jsANDnode.js

سلام این کد رو دوستان لطف کنن کامل کنند من هرچی زدم ارور داد ممنو ن میشم

const express = require("express");  
const expressLayouts = require("express-ejs-layouts");  
const ejs = require("ejs");  
const path = require("path");  
const session = require("express-session");  
const SequelizeStore = require("connect-session-sequelize")(session.Store);  
const app = express();
module.exports = class Application {  
constructor() {  
this.configServer();  
this.configDatabase();  
this.configApp();  
this.configRoutes();  
}
configServer() {  
app.listen(5000, (err) => {  
if (err) {  
console.log(err);  
}  
console.log("server created...");  
});  
}
configDatabase() {  
const sequelizeConfig = require("./configDatabase");  
sequelizeConfig  
.authenticate()  
.then(() => {  
console.log("Connected to MariaDB");  
})  
.catch((err) => {  
console.error("Error connecting to MariaDB:", err);  
});  
}
configApp() {  
app.use(express.static(path.join(**dirname, "public")));  
app.set("view engine", "ejs");  
app.set("views", path.join(**dirname, "resource/views"));  
app.use(expressLayouts);  
app.set("layout", "masterPage");  
app.set("layout extractStyles", true);  
app.set("layout extractScripts", true);
app.use(
  session({
    secret: "my-secret-key",
    resave: false,
    proxy: true,
    saveUninitialized: true,
    store: ?, 
    db: "?",
    table: "Session",
    extendDefaultFields: (defaults, session) => {
      return {
        data: defaults.data,
        expires: defaults.expires,
        userId: session.userId,
      };
    },
  })
);
}
configRoutes() {  
const routing = require("./routes/masterRouters");
app.use(routing);
}  
};  

ثبت پرسش جدید
امین
@safaeiiam 10 ماه پیش مطرح شد
0

کدهای خودتو به صورت زیر اصلاح کن ببین مشکلت حل میشه:

app.use(express.static(path.join(__dirname, "public")));
app.set("views", path.join(__dirname, "resource/views"));
const SequelizeStore = require("connect-session-sequelize")(session.Store);
const sequelizeConfig = require("./configDatabase");
const sessionStore = new SequelizeStore({ db: sequelizeConfig });

app.use(
  session({
    secret: "my-secret-key",
    resave: false,
    proxy: true,
    saveUninitialized: true,
    store: sessionStore,
    table: "Session",
    extendDefaultFields: (defaults, session) => {
      return {
        data: defaults.data,
        expires: defaults.expires,
        userId: session.userId,
      };
    },
  })
);

جواد
تخصص : php
@node.core 10 ماه پیش مطرح شد
0

سلام امین
ممنون از کمکی که کردی میشه یه توضیح کوچولو هم بدی که چیکار کردی ؟


امین
@safaeiiam 10 ماه پیش آپدیت شد
0

ببین دوست عزیز، اول که از dirname اشتباه استفاده کرده بودی، در صورتیکه این متغیر در کد اصلی نمیادو باید به جای dirname از __dirname استفاده کنی.

ثانیاً، در بخش configApp از express-session استفاده ‌ کردی ولی store رو تعیین ‌نکردی. برای استفاده از SequelizeStore، باید یک نمونه از آن را ایجاد بکنی و به عنوان مقدار store در express-session استفاده کنی.


جواد
تخصص : php
@node.core 10 ماه پیش مطرح شد
0

خیلی عالی ...
تشکر فراوان.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام