2 글 보임 - 1 에서 2 까지 (총 2 중에서)
-
글쓴이글
-
2024년 5월 20일 14:53 #123604
조우제참가자list 페이지에서 글제목 클릭해서 detail 페이지 클릭했을 때 나는 에러가 나는데 도움 부탁드립니다. db 연결은 잘 됩니다.
db connected! running on 8080 BSONError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer at new ObjectId (C:\Users\jowu7\Dropbox\programming\nodejs\node_modules\bson\lib\bson.cjs:2055:23) at C:\Users\jowu7\Dropbox\programming\nodejs\server.js:49:66 at Layer.handle [as handle_request] (C:\Users\jowu7\Dropbox\programming\nodejs\node_modules\express\lib\router\layer.js:95:5) at next (C:\Users\jowu7\Dropbox\programming\nodejs\node_modules\express\lib\router\route.js:149:13) at Route.dispatch (C:\Users\jowu7\Dropbox\programming\nodejs\node_modules\express\lib\router\route.js:119:3) at Layer.handle [as handle_request] (C:\Users\jowu7\Dropbox\programming\nodejs\node_modules\express\lib\router\layer.js:95:5) at C:\Users\jowu7\Dropbox\programming\nodejs\node_modules\express\lib\router\index.js:284:15 at param (C:\Users\jowu7\Dropbox\programming\nodejs\node_modules\express\lib\router\index.js:365:14) at param (C:\Users\jowu7\Dropbox\programming\nodejs\node_modules\express\lib\router\index.js:376:14) at Function.process_params (C:\Users\jowu7\Dropbox\programming\nodejs\node_modules\express\lib\router\index.js:421:3) -----[server.js 코드]-----------------------------------------------------------------
const express = require('express'); const app = express();
app.use(express.static(__dirname + '/public')); app.set('view engine', 'ejs'); app.use(express.json()); app.use(express.urlencoded({extended:true}));
const { MongoClient, ObjectId } = require('mongodb');
let db; const url = 'mongodb+srv://<아이디, 비번>@test-mdb-cluster.g7dk7yd.mongodb.net/?retryWrites=true&w=majority&appName=test-mdb-cluster'; new MongoClient(url).connect().then((client)=>{ console.log("db connected!") db = client.db('forum'); app.listen(8080, ()=>{ console.log('running on 8080') }); }).catch((err)=>{ console.log(err) })
app.get('/news', (requests, responses)=>{ db.collection('post').insertOne({title: 'title 001'}) })
app.get('/', (requests, responses)=>{ // responses.send('homepage!') })
app.get('/list', async (requests, responses)=>{ let result = await db.collection('post').find().toArray(); //console.log(result); responses.render('list.ejs', { posts: result }); })
app.get('/write', (requests, responses)=>{ responses.render('write.ejs'); })
app.post('/add', async (requests, responses)=>{ console.log(requests.body); await db.collection('post').insertOne({title:requests.body.title, content:requests.body.content}); responses.redirect('/'); })
app.get('/detail/:id', async (requests, responses)=>{ try { let result = await db.collection('post').findOne({ _id : new ObjectId(requests.params.id)}) //console.log(requests.params); responses.render('detail.ejs',{ result : result }); } catch(e) { console.log(e); responses.status(404).send('strange url') } })
app.get('/edit/:id', async (requests, responses)=>{ let result = await db.collection('post').findOne({_id: new ObjectId(requests.params.id) }) console.log(result) responses.render('edit.ejs', {result: result}) })
app.post('/edit/:id', async (requests, responses)=>{ await db.collection('post').updateOne({_id: new ObjectId(requests.params.id) }, {$set : {title: requests.body.title, content : requests.body.content }}) console.log(result) responses.render('edit.ejs', {result: result}) }) -------[list.ejs code]-----------------------------------------------
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link href="main.css" rel="stylesheet"> </head> <body class="grey-bg">
<%- include('nav.ejs') %>
<div class="white-bg"> <% for (let i = 0; i < posts.length; i++) { %> <div class="list-box">
<h4> "><%= posts[i].title %> ">✏️ </h4> <p><%= posts[i].content %></p> </div> <% } %> </div> </body> </html> -----[detail.ejs code]----------------------------------------------
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link href="main.css" rel="stylesheet"> </head>
<body class="grey-bg">
<%- include('nav.ejs') %> <%= JSON.stringify(result) %>
<div class="detail-bg"> <h4><%= result.title %></h4> <p><%= result.content %></p> </div> </body> </html>
-
글쓴이글
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
- 답변은 로그인 후 가능합니다.