채용 공고 사이트: 환경 변수 및 데이터베이스




GitHub: https://github.com/Sokhavuth/opine-job
Deno 배포: https://khmerweb-job.deno.dev

Opine 웹 프레임워크는 Node.js 환경에서 Express 프레임워크의 정확한 복사본입니다. 따라서 Express.js 사용에 대한 충분한 경험이 있다면 Opine 웹 프레임워크를 사용하는 데 아무런 문제가 없을 것입니다.

프로젝트를 생성할 때 Opine CLI는 애플리케이션 구축을 시작하기 위한 최소 요구 사항을 구축합니다. 그러나 애플리케이션이 완전한 채용 공고 웹사이트가 되기 위해 필요한 기능을 갖추려면 단계적으로 더 많은 파일을 추가해야 합니다.

또한 데이터베이스에 데이터를 저장하려면 데이터베이스 서버에 계정이 있어야 합니다. 그리고 학습을 위해 MongoDB Atlas를 기본 데이터베이스로 사용하여 다양한 데이터를 저장할 수 있습니다. 무료 데이터베이스 계정을 가지려면 https://www.mongodb.com/atlas/database 웹 사이트로 이동하여 MongoDB Atlas에 가입할 수 있습니다. 또한 애플리케이션 세션과 관련된 데이터를 저장하기 위해 Redis를 경량 데이터베이스로 사용할 것입니다. https://redis.com/에서 무료 Redis 데이터베이스 계정에 가입할 수 있습니다.

마지막으로 MongoDB 및 Redis 데이터베이스를 사용하려면 예를 들어 루트 디렉터리에 있는 "setting.js"라는 파일에 필요한 코드를 작성하여 응용 프로그램을 시작할 때 해당 데이터베이스에 응용 프로그램을 연결해야 합니다.



// 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, myredis } from "./setting.js";
app.use(async (req, res, next) => {
    req.mydb = await mydb;
    req.myredis = await myredis;
    req.mysetting = await setting;
    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;



// 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'),
});


export { setting, mydb, myredis }



// 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';



// .env

SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DATABASE_URI=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DB_NAME=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
REDIS_URI=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
REDIS_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
REDIS_PORT=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

좋은 웹페이지 즐겨찾기