ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • mongoDB 사용하기
    node.js 2020. 12. 2. 08:00

    mongoDB를 웹페이지, 웹소켓 등에 두루 사용하기위해 mongoDB.js 모듈을 만든다. 필요에 맞는 스키마를 선택하여 불러와 사용할 수 있다.

     

    서버(./routes/mongoDB.js)

    // DB 주소, 사용자정보 등은 노출되지않게 환경변수에 저장
    require('dotenv').config();
    const dbURL = process.env.dbURL;
    
    // mongoDB 컨트롤을 위한 mongoose 미들웨어
    const mongoose = require('mongoose');
    mongoose.set('useCreateIndex', true);
    mongoose.connect(dbURL, {useNewUrlParser:true,useUnifiedTopology:true});
    mongoose.connection.on('error', console.error.bind(console, "connection error:"));
    mongoose.connection.once('open', ()=> console.log("DB connected") );
    
    // 여러개의 스키마를 작성, 따로 내보낼 수 있음
    // 유저(user) 스키마
    const user = new mongoose.Schema({
    	date: Date,
    	email: { type: String,	unique: true },
    	password: Object,
    	name: String,
    });
    
    // 부서(department) 스키마
    const department = new mongoose.Schema({
    	date: Date,
    	name: String,
    	tel: String,
    	chiefName: String,
    	logo: {data:Buffer,contentType:String},
    });
    
    // 스키마 내보내기
    module.exports = {
        User: mongoose.model('user',user),
        Department: mongoose.model('department',department)
    }

     

    서버(./routes/index.js)

    const express = require('express');
    const router = express.Router();
    const bodyParser = require("body-parser");
    
    // User 스키마 가져오기
    const {User} = require('./mongoDB');
    
    // 유저 찾기요청을 받았을 때
    router.post('/finduser', (req,res)=>{
    	User.find( {email:req.body.email} ).exac().than( user=>{
        	console.log(user)
        }
    })
    
    module.exports = router;

     

    서버(./routes/webSocket.js)

    // Department 스키마 가져오기(모듈별로 필요한 스키마를 불러와서 이용 가능)
    const {Department} = require('./mongoDB');
    
    // 웹소켓 연결
    const wsModule = require('ws');
    const server = (_server)=>{
    	wss.on('connection', (ws,req)=>{
    		// 클라이언트로부터 메세지를 받았을 때
    		ws.on('message', evt=>{
            	// 메세지내용을 mongoDB에서 검색
    			User.find( {email:evt} ).exec().then(user=>{
                	// 검색결과를 클라이언트에게 보냄
    				ws.send( user.name )
    			})
        })
    }
    
    module.exports = server
Designed by Tistory.