-
글쓴이글
-
2021년 11월 7일 21:24 #19328
김보라참가자이틀동안 씨름하다가 도저히 안되겠어서 문의드립니다.
일단 db = client.db('todoapp'); 밑에 app.db = db; 는 추가했습니다.
다른 코드들은 잘 되고, 밑에 이 두 코드만 안됩니다.
// 데이터 저장 및 업데이트
router.post('/add', function (요청, 응답) {
요청.app.db.collection('counter').findOne({name : '게시물갯수'}, function(에러, 결과){ // db에서 게시물 갯수 데이터를 꺼낸다
let 총게시물갯수 = 결과.totalPost // 꺼낸 게시물 갯수 데이터를 변수에 담는다요청.app.db.collection('post').insertOne({ _id : 총게시물갯수 + 1, 제목 : 요청.body.title, 날짜 : 요청.body.date }, function (에러, 결과) { // post db에 총 게시물 갯수 +1, 요청받은 데이터들을 db에 저장한다
요청.app.db.collection('counter').updateOne({name:'게시물갯수'},{ $inc: {totalPost:1} },function(에러, 결과){
if(에러){return console.log(에러)} // 글번호 업데이트를 위해서, counter db에 게시물 갯수를 업데이트한다.
응답.send('전송완료');
})
})
})
});
TypeError: Cannot read properties of undefined (reading 'title') << 에러// 게시물 삭제하기
router.delete('/delete', function(요청, 응답) {
console.log(요청.body); // ajax에서 data : { _id : 1 } => 요청.body 로 받아옴
요청.body._id = parseInt(요청.body._id); // 요청받은 데이터는 꼭 정수로 변환
요청.app.db.collection('post').deleteOne(요청.body, function(에러, 결과) { // 요청받은 데이터 (data : { _id : 1 }) 삭제
console.log('삭제완료');
응답.status(200).send( { message : '성공했습니다.' }); // 응답코드
})
});TypeError: Cannot read properties of undefined (reading '_id') << 에러
헝헝 ㅠㅠ 도와주세영
2021년 11월 7일 22:33 #19332
codingapple키 마스터server.js 상단에 const모여있는 곳 하단에
app.use(express.json());
이걸 추가해봅시다
2021년 11월 8일 00:11 #19337
김보라참가자그래도 안됩니다 ㅠ_ㅠ 지금 코드 3개가 다 안되는데, server.js 에서는 작동되고,
routes.index.js 에서는 안돼요 ㅠ_ㅠ
뭔가 비슷한 맥락인 것 같기도 하고 일단 안되는 코드 하나만 올려볼게요
일단-----server.js ----------
const express = require('express');
const app = express();
const MongoClient = require('mongodb').MongoClient;
const bodyParser = require('body-parser');
const methodOverride = require('method-override')
require('dotenv').config()app.use('/', require('./routes/index.js') );
app.use(express.urlencoded({extended: true}))
app.use(express.json()); // <<<<<<<< 추가했어요 ㅠ_ㅠ
app.use('/public', express.static('public'))
app.use(methodOverride('_method'))
app.set('view engine', 'ejs');// DB접속하기
let db;
MongoClient.connect(process.env.DB_URL, {useUnifiedTopology: true, useNewUrlParser: true }, function(에러, client) {
if (에러) return console.log(에러)
db = client.db('todoapp'); // todoapp이라는 database에 연결좀여
app.db = db;
app.listen(process.env.PORT, function() {
console.log('listening on 8080')
})
});------------routes.index.js----------
// 게시판 저장
router.post('/add', function (요청, 응답) {
요청.app.db.collection('counter').findOne({name : '게시물갯수'}, function(에러, 결과) { // db에서 게시물 갯수 데이터를 꺼낸다
let 총게시물갯수 = 결과.totalPost // 꺼낸 게시물 갯수 데이터를 변수에 담는다요청.app.db.collection('post').insertOne({ _id : 총게시물갯수 + 1, 제목 : 요청.body.title, 날짜 : 요청.body.date },
function (에러, 결과) { // post db에 총 게시물 갯수 +1, 요청받은 데이터들을 db에 저장한다요청.app.db.collection('counter').updateOne({name:'게시물갯수'},{ $inc: {totalPost:1} },function(에러, 결과){
if(에러){return console.log(에러)} // // 글번호 업데이트를 위해서, counter db에 게시물 갯수를 업데이트한다
응답.send('전송완료');
})
})
})
});------에러코드
listening on 8080
D:\git\class\todoapp\node_modules\mongodb\lib\utils.js:113
throw err;
^TypeError: Cannot read properties of undefined (reading 'title')
at D:\git\class\todoapp\routes\index.js:26:77
at D:\git\class\todoapp\node_modules\mongodb\lib\utils.js:704:5
at executeCallback (D:\git\class\todoapp\node_modules\mongodb\lib\operations\execute_operation.js:65:7)
at handleCallback (D:\git\class\todoapp\node_modules\mongodb\lib\utils.js:109:55)
at D:\git\class\todoapp\node_modules\mongodb\lib\operations\find_one.js:31:9
at D:\git\class\todoapp\node_modules\mongodb\lib\utils.js:704:5
at D:\git\class\todoapp\node_modules\mongodb\lib\cursor.js:256:9
at handleCallback (D:\git\class\todoapp\node_modules\mongodb\lib\core\cursor.js:32:5)
at nextFunction (D:\git\class\todoapp\node_modules\mongodb\lib\core\cursor.js:874:5)
at D:\git\class\todoapp\node_modules\mongodb\lib\core\cursor.js:750:7
[nodemon] app crashed - waiting for file changes before starting... -
글쓴이글
- 답변은 로그인 후 가능합니다.