-
글쓴이글
-
2022년 4월 15일 08:22 #31791
서영석참가자
app.post('/chatroom',로그인했니,function(요청,응답){var 저장할거 = {
title : '1번장바구니',
member : [요청.body.당한사람id, 요청.user._id],
product : [요청.body.prdname,요청.body.prdcount],
date : new Date()
}db.collection('chatroom').insertOne(저장할거).then((결과)=>{
})
})기존 강의와 다르게 상품 정보를 추가해서 장바구니를 설계를 하려고 합니다.
const express = require('express');
const app = express();
const methodOverride = require('method-override');
const bodyParser = require('body-parser');
const MongoClient = require('mongodb').MongoClient;app.use(express.urlencoded({ extended: true }));
app.use(express.json()); // parse jsonapp.use('/public', express.static('public'));
app.use(methodOverride('_method'));app.set('view engine', 'ejs');
app.set('views','./views');var db;
MongoClient.connect('mongodb+srv://scott:scott@cluster0.eeagm.mongodb.net/perfumeapp?retryWrites=true&w=majority', function(에러, client){
if (에러) return console.log(에러);
db = client.db('perfumeapp');
app.listen('8080', function(){
console.log('listening on 8080')
});
})app.get('/sub', function(요청, 응답){
응답.render('sub.ejs')
});
app.get('/', function(요청, 응답){
응답.render('index.ejs')
});app.get('/mypage', function(요청, 응답){
응답.render('mypage.ejs')
});app.get('/logout', function(요청, 응답){
응답.render('logout.ejs')
});app.get('/join', function(요청, 응답){
응답.render('join.ejs')
});
app.get('/list',function(요청,응답){
db.collection('product').find().toArray(function(에러,결과){
console.log(결과)
응답.render('list.ejs',{notes:결과});
});
});app.post('/register', function (요청, 응답) {
db.collection('user').insertOne({ id: 요청.body.id, pw1: 요청.body.pw1, pw2: 요청.body.pw2, 이름: 요청.body.name, 성별: 요청.body.gender, 휴대폰번호:요청.body.ph,주소:요청.body.addr}, function (에러, 결과) {
응답.redirect('/')
})
})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());app.get('/login', function(요청, 응답){
응답.render('login.ejs')
});app.post('/logout',function(요청, 응답){
요청.logout();
응답.redirect('/');
});app.post('/login', passport.authenticate('local', {failureRedirect : '/fail'}), function(요청,응답){
응답.redirect('/sub')
});function 로그인했니(요청,응답,next){
if(요청.user){
next()
} else {
응답.send('로그인안하셨는데요')
}
}passport.use(new LocalStrategy({
usernameField: 'id',
passwordField: 'pw1',
session: true,
passReqToCallback: false,
}, function (입력한아이디, 입력한비번, done) {
//console.log(입력한아이디, 입력한비번);
db.collection('user').findOne({ id: 입력한아이디 }, function (에러, 결과) {
if (에러) return done(에러)
if (!결과) return done(null, false, { message: '존재하지않는 아이디요' })
if (입력한비번 == 결과.pw1) {
return done(null, 결과)
} else {
return done(null, false, { message: '비번틀렸어요' })
}
})
}));passport.serializeUser(function (user, done) {
done(null, user.id)
});
passport.deserializeUser(function (아이디, done) {
db.collection('user').findOne({id : 아이디}, function(에러, 결과){
done(null, 결과)
})
});app.get('/pen',로그인했니,function(요청,응답){
응답.render('pen.ejs');
});function 로그인했니(요청,응답,next){
if(요청.user){
next()
} else {
응답.send('로그인안하셨는데요')
}
}
app.post('/chatroom',로그인했니,function(요청,응답){var 저장할거 = {
title : '1번장바구니',
member : [요청.body.당한사람id, 요청.user._id],
product : [요청.body.prdname,요청.body.prdcount],
date : new Date()
}db.collection('chatroom').insertOne(저장할거).then((결과)=>{
})
})
app.get('/chat', 로그인했니, function(요청, 응답){db.collection('chatroom').find({ member : 요청.user._id }).toArray().then((결과)=>{
console.log(결과);
응답.render('chat.ejs', {data:결과})
})
});
app.post('/message', 로그인했니, function(요청, 응답){
var 저장할거 = {
parent : 요청.body.parent,
userid : 요청.user._id,
content : 요청.body.content,
date : new Date(),
}
db.collection('message').insertOne(저장할거).then((결과)=>{
console.log('DB저장완료')
응답.send(결과);
})
});app.get('/message/:parentid', 로그인했니, function(요청, 응답){
응답.writeHead(200, {
"Connection": "keep-alive",
"Content-Type": "text/event-stream",
"Cache-Control": "no-cache",
});
db.collection('message').find({ parent: 요청.params.parentid }).toArray()
.then((결과)=>{
console.log(결과);
응답.write('event: test\n');
응답.write(data: ${JSON.stringify(결과)}\n\n
);
});
const 찾을문서 = [
{ $match: { 'fullDocument.parent': 요청.params.parentid } }
];
const changeStream = db.collection('message').watch(찾을문서);
changeStream.on('change', result => {
console.log(result.fullDocument);
var 추가된문서 = [result.fullDocument];
응답.write(data: ${JSON.stringify(추가된문서)}\n\n
);
});
});
app.get('/pen',로그인했니,function(요청,응답){
응답.render('pen.ejs');
});function 로그인했니(요청,응답,next){
if(요청.user){
next()
} else {
응답.send('로그인안하셨는데요')
}
}app.post('/pencil', function(요청, 응답){
db.collection('board').insertOne( {작성자: 요청.body.writer, 제목:요청.body.text, 내용:요청.body.subject} , function(에러,결과){
console.log('저장완료');
// db.collection('accounter').updateOne({name:'상품갯수'},{$inc :{AllProduct:1}})
if(에러){return console.log(에러)}
})
});app.get('/blist',function(요청,응답){
db.collection('board').find().toArray(function(에러,결과){
console.log(결과)
응답.render('blist.ejs',{boards:결과});
});
});app.post('/add',로그인했니, function(요청, 응답){
응답.send('전송완료');
db.collection('notecounter').findOne({name : '작성물갯수'}, function(에러, 결과){
console.log(결과.totalNote)
var 총작성물갯수 = 결과.totalNote;
db.collection('product').insertOne( { _num: 총작성물갯수 + 1,상품명: 요청.body.prdname, 가격:요청.body.prdprice,향수종류 : 요청.body.pfcategory, 카테고리분류: 요청.body.prdcategory,향구성:요청.body.prdperfume,수량:요청.body.prdcount} , function(에러,결과){
console.log('저장완료');
db.collection('notecounter').updateOne({name:'작성물갯수'},{ $inc :{totalNote:1}},function(에러,결과){
// db.collection('accounter').updateOne({name:'상품갯수'},{$inc :{AllProduct:1}})
if(에러){return console.log(에러)}
})
});
});
});app.get('/write',로그인했니,function(요청, 응답){
응답.render('write.ejs')
});let multer = require('multer');
var storage = multer.diskStorage({destination : function(req, file, cb){
cb(null, './public/image')
},
filename : function(req, file, cb){
cb(null, file.originalname )
}});
var upload = multer({storage : storage});
app.get('/upload',로그인했니,function(요청,응답){
응답.render('upload.ejs')
});app.post('/upload', upload.single('프로필'), function(요청, 응답){
응답.send('업로드완료')
});
app.get('/edit/:id',로그인했니,function(요청,응답){
db.collection('product').findOne({_id :parseInt(요청.params.id)},function(에러,결과){
console.log(결과)
응답.render('edit.ejs', {product : 결과})
})
});app.put('/edit', function(요청, 결과){
db.collection('product').updateOne( {_id : parseInt(요청.body.id) }, {$set : { 상품명: 요청.body.prdname, 가격:요청.body.prdprice,향수종류 : 요청.body.pfcategory, 카테고리분류: 요청.body.prdcategory,향구성:요청.body.prdperfume}},
function(){
console.log('수정완료')
응답.redirect('/list')
});
});방향이 잘 가는 것인지 도움을 받고 싶어 글을 올립니다.
2022년 4월 15일 09:47 #31794
codingapple키 마스터의도한바 대로 잘 되면 이상없는 것입니다
유저가 데이터를 빈칸을 적어보내면 어떻게할지 숫자말고 문자를 보내면 어떻게할지
이런 것들도 조건을 넣는게 안전합니다
-
글쓴이글
- 답변은 로그인 후 가능합니다.