-
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