-
글쓴이글
-
2022년 3월 2일 16:54 #28586
현정참가자건드린게 없는데 index랑 write.html render한뒤부터 계속 모듈을 찾을수 없다고 떠요 왜그런가요?ㅠㅠ
(package.json)
{
"name": "todoapp",
"version": "1.0.0",
"description": "",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"body-parser": "^1.19.2",
"ejs": "^3.1.6",
"express": "^4.17.3",
"mongodb": "^4.4.0",
"nodemon": "^2.0.15"
}
}(server.js)
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const { Db } = require('mongodb')
// const { Db } = require('mongodb')
app.use(bodyParser.urlencoded({extended: true}))
const MongoClient = require('mongodb').MongoClient
app.set('view engine', 'ejs')
app.engine('html', require('ejs').renderFile);
// public 폴더 쓸거다~
app.use('/public', express.static('public'))
// 폼에서 만든 데이터를 db에 저장해보자!
// 1.서버로 데이터 전송할수있는 UI 만들기
// 2.서버에서 원하는대로 정보를 처리해주면됨
// MongoDB DB로 무료호스팅을 하자!
var db;
MongoClient.connect('mongodb+srv://p42510:1234@cluster0.qx0kj.mongodb.net/TODOAPP?retryWrites=true&w=majority', { useUnifiedTopology: true },function(에러, clinet){
// 연결되면 할일(에러처리 mongdb관련 함수들 전부 콜백함수에서 에러처리 가능)
if (에러) return console.log(에러)
db = clinet.db('TODOAPP')
// todoapp 이라는 db에 연결좀요// db.collection('post').insertOne( {이름: 'John', 나이: 20, _id :100},function(에러, 결과){
// console.log('저장완료')
// })
// 이름과 나이를 db에 저장해보자
app.listen(8080, function(){
console.log('listening on 8080')
});
})// 누군가가 /pet 으로 방문을 하면 pet관련된 안내문을 띄워주자
app.get('/pet', function(요청, 응답){
응답.send('펫용품 쇼핑할 수 있는 페이지입니다.')
});app.get('/beauty', function(요청, 응답){
응답.send('뷰티용품 구입할 수 있는 페이지입니다.')
})app.get('/', function(요청, 응답){
응답.sendFile(__dirname +'/index.html')
})app.get('/write', function(요청, 응답){
응답.sendFile(__dirname + '/write.html')
})// 어떤 사람이 /add 경로로 POST 요청을 하면
app.post('/add', function(요청, 응답){
console.log(요청.body.date)
console.log(요청.body.title)
db.collection('counter').findOne( { name: '게시물갯수'}, function(에러, 결과){
console.log(결과.totalPost)
var 총게시물갯수 = 결과.totalPost
// db.counter에서 총게시물갯수를 찾고 변수로 저장// 이제 db.post에 새게시물을 기록한뒤 완료되면 db.counter내의 총게시물갯수+1
db.collection('post').insertOne( {_id : 총게시물갯수 + 1, 제목:요청.body.title, 날짜:요청.body.date}, function(에러, 결과){
응답.send('전송완료')
console.log('저장완료')
// count라는 콜렉션에 있는 totalPost라는 항목도 1 증가시켜야함(수정)
db.collection('counter').updateOne( { name:'게시물갯수'},{ $inc : {totalPost:1}}, function(에러, 결과){
if(에러) {return console.log(에러)}
})
})
})
})// /list 로 GET요청으로 접속하면
// 실제 DB에 저장된 데이터들로 예쁘게 꾸며진 HTML을 보여줌
app.get('/list', function(요청, 응답){
// post 라는 collection안의 모든 db 데이터를 꺼내보자
db.collection('post').find().toArray(function(에러,결과){
console.log(결과)
응답.render('list.ejs', {posts: 결과 })
// 꺼낸 데이터 ejs파일에 집어넣깅 { 이런이름으로 : 이런데이터를}
})
})// 게시물 삭제버튼 누를때만 삭제하는 방법
app.delete('/delete', function(요청, 응답){
console.log(요청.body)
요청.body._id = parseInt(요청.body._id);
// 요청.body에 담긴 게시물 번호에따라 db에서 게시물삭제
db.collection('post').deleteOne(요청.body, function(에러, 결과){
console.log('삭제완료')
응답.status(200).send({ messeage: '성공했습니다'})
})
응답.send('삭제완료')
})// detail[i]로 접속하면 detail[i].ejs 보여줌
app.get('/detail/:id', function(요청, 응답){
db.collection('post').findOne({_id : parseInt(요청.params.id)}, function(에러, 결과){
console.log(결과)
응답.render('detail.ejs', { data : 결과})
})
})app.get('/', function(요청, 응답){
응답.render('index.ejs')
})
app.get('/write', function(요청, 응답){
응답.render('write.ejs')
})app.get('/write', function(요청, 응답){
응답.sendFile(__dirname + '/write.html')
})얘랑 render 문 같이 쓰는게 관련이있나요?2022년 3월 2일 22:33 #28611
codingapple키 마스터require('mongodb') 3개 있는거같은데 2개는 지웁시다
nodejs 17버전 버그같은걸 수도 있습니다 16버전을 쓰도록 합시다
-
글쓴이글
- 답변은 로그인 후 가능합니다.