채용 공고 웹사이트: 지원 세션
14620 단어 opinejavascriptreactwebdev
목차
Sokhavuth TIN ・ 8월 11일 ・ 2분 읽기
GitHub: https://github.com/Sokhavuth/opine-job
Deno 배포: https://khmerweb-job.deno.dev
Redis 데이터베이스에 유용한 세션 데이터를 저장하기 위해 deps.ts 모듈의 패키지 목록에 이 링크를 추가하여 "Deno Sessions"https://deno.land/x/[email protected]라는 타사 패키지를 사용할 수 있습니다.
// deps.ts
export {
dirname,
fromFileUrl,
join,
} from "https://deno.land/[email protected]/path/mod.ts";
export {
json,
opine,
Router,
serveStatic,
urlencoded,
} from "https://deno.land/x/[email protected]/mod.ts";
export { config } from "https://deno.land/[email protected]/dotenv/mod.ts";
export { Bson, MongoClient } from "https://deno.land/x/[email protected]/mod.ts";
export { connect } from 'https://deno.land/x/[email protected]/mod.ts';
export { OpineSession, RedisStore } from "https://deno.land/x/[email protected]/mod.ts";
그러나 이 패키지는 아직 Redis Enterprise 플랫폼에서 Redis 데이터베이스를 지원하지 않으며 독립 실행형 Redis 오픈 소스만 지원합니다. 이 패키지를 사용하려면 보기에서 RedisStore 클래스를 서브클래싱하여 init() 메서드를 재정의하여 약간 수정해야 합니다.
// setting.js
function setting(){
const configure = {
site_title: "Ever Job",
page_title: "Home",
message: "",
dasPostAmount: 10,
homePostAmount: 12,
}
return configure;
}
import { config } from "./deps.ts";
await config({export: true});
import { MongoClient } from "./deps.ts";
const client = await new MongoClient();
await client.connect(Deno.env.get('DATABASE_URI'));
const mydb = client.database(Deno.env.get('DB_NAME'));
import { connect } from "./deps.ts";
const myredis = await connect({
hostname: Deno.env.get('REDIS_URI'),
port: parseInt(Deno.env.get('REDIS_PORT')),
password: Deno.env.get('REDIS_PASSWORD'),
});
import { OpineSession, RedisStore } from "./deps.ts";
class _RedisStore extends RedisStore{
async init(){
this.db = await myredis;
}
};
const session_store = new _RedisStore({});
await session_store.init();
export { setting, mydb, session_store, OpineSession };
세션을 생성하고 나중에 다른 모듈에서 사용할 요청 객체에 저장하려면 다음과 같이 해야 합니다.
// app.ts
import {
dirname,
fromFileUrl,
join,
json,
opine,
serveStatic,
urlencoded,
} from "./deps.ts";
import indexRouter from "./routes/index.ts";
import usersRouter from "./routes/users.ts";
const app = opine();
import {
setting,
mydb,
session_store,
OpineSession,
} from "./setting.js";
const session = new OpineSession(app, {}, session_store);
app.use(async (req, res, next) => {
req.mydb = await mydb;
req.mysetting = await setting;
req.mysession = session;
next();
});
const __dirname = fromFileUrl(dirname(import.meta.url));
// Handle different incoming body types
app.use(json());
app.use(urlencoded());
// Serve our static assets
app.use(serveStatic(join(__dirname, "public")));
// Mount our routers
app.use("/", indexRouter);
app.use("/users", usersRouter);
export default app;
Reference
이 문제에 관하여(채용 공고 웹사이트: 지원 세션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sokhavuth/job-announcement-website-application-session-4epb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)