3 글 보임 - 1 에서 3 까지 (총 3 중에서)
-
글쓴이글
-
2023년 9월 15일 13:04 #98026
전제욱참가자노트북으로 집에서 작업하다가 밖으로 나와서 작업하면 코드를 하나도 건드리지 않았는데도 저런 오류가 발생하면서 서버가 계속 실행되지 않습니다. 계속 찾아봐도 해결되지 않아 문의드립니다 ㅠㅠ
const express = require('express'); const app = express(); const bodyParser = require('body-parser');
app.use(express.urlencoded({extended: true})); app.set('view engine', 'ejs');
require('dotenv').config();
const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const session = require('express-session');
app.use(session({secret : '비밀코드', resave : true, saveUninitialized: false})); app.use(passport.initialize()); app.use(passport.session());
const MongoClient = require('mongodb').MongoClient;
var db; MongoClient.connect(process.env.DB_URL, { useNewUrlParser: true, useUnifiedTopology: true }, function(error, client) { if(error) { return console.log(error); }
db = client.db('bulletin') app.listen(process.env.PORT, function(){ console.log('listening on 8080') });
app.get('/login', function(req, res){ res.render('login.ejs') })
app.post('/login', passport.authenticate('local', { failureRedirect : '/fail' }) , function(req, res){ res.redirect('/bulletin') })
//이해하지말고 걍 복사하셈 아이디랑 비번 검증하는 코드 passport.use(new LocalStrategy({ usernameField: 'id', passwordField: 'pw', session: true, passReqToCallback: false, }, function (입력한아이디, 입력한비번, done) { //console.log(입력한아이디, 입력한비번); db.collection('login').findOne({ id: 입력한아이디 }, function (error, result) { if (error) return done(error) if (!result) return done(null, false, { message: '존재하지않는 아이디입니다' }) if (입력한비번 == result.pw) { return done(null, result) } else { return done(null, false, { message: '비번번호가 일치하지 않습니다' }) } }) })); passport.serializeUser(function(user, done){ done(null, user.id) }) passport.deserializeUser(function(id, done){ db.collection('login').findOne({id : id}, function(error, result){ done(null, result) }) })
app.get('/bulletin', loginClear, function(req, res){ //디비에 저장된 post라는 collection 안에 모든 데이터를 꺼내주세요. 아니면 뭐 아이디가 뭐인 데이터 꺼내셈 이런거 db.collection('post').find().toArray(function(error, result){ console.log(result) res.render('bulletin.ejs', { answers : result }); }) })
app.post('/bulletin', function(req, res){ //완료되었다는 alert창이 뜨게 해주세요. console.log('대답은' + req.body.answer); //counter 데이터베이스 하나 더 만들어서 카운터 따로 관리해줘야함 db.collection('counter').findOne({name : '게시물갯수'}, function(error, result){ console.log(result.totalPost) var totalPost = result.totalPost;
var Storage = {_id : totalPost + 1, 작성자 : req.user.name, 답변 : req.body.answer}; db.collection('post').insertOne(Storage, function(error, result){ console.log('저장완료'); db.collection('counter').updateOne({name : '게시물갯수'}, {$inc : {totalPost:1}}, function(error, result){ if(error) { return console.log(error) } }) }) }) })
function loginClear(req, res, next) { if(req.user){ next() } else { res.render('login.ejs') } }
app.get('/', function(req, res){ res.render('index.ejs') }) })
[nodemon] 3.0.1 [nodemon] to restart at any time, enter `rs` [nodemon] watching path(s): *.* [nodemon] watching extensions: js,mjs,cjs,json [nodemon] starting `node server.js` [nodemon] clean exit - waiting for changes before restart
-
글쓴이글
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
- 답변은 로그인 후 가능합니다.