4 글 보임 - 1 에서 4 까지 (총 4 중에서)
-
글쓴이글
-
2023년 5월 26일 14:19 #84633
코딩마스터참가자(list.ejs)
<!doctype html> <html lang="en">
<head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous">
<title>Hello, world!</title> </head>
<body> <%- include('nav.html') %> <h4 class="ml-4 my-3 text-center">서버에서 가져온 할일 리스트</h4>
<div class="container input-group mb-2"> <input class="form-control" id="search_input"> <button class="input-group-append btn btn-danger" id="search">검색</button> </div>
<div class="container"> <ul class="list-group"> <% for(let i=0; i< posts.length; i++){ %> <li class="list-group-item"> <h5>글번호: <%= posts[i]._id %> </h5> <h5 class="todo">할일: <%= posts[i].title %> </h5> <p>마감일 : <%= posts[i].date %> </p> <p>작성자 : <%= posts[i].author %> <button class="chat btn btn-secondary" data-id=" <%= posts[i].author %>">채팅하기</button> </p> <button class="delete btn btn-danger" data-id=" <%= posts[i]._id %>">삭제</button> <button class="edit btn btn-primary" data-id=" <%= posts[i]._id %>">수정</button>
<% } %>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>
<script> $('#search').click(function () { var enteredValue = $('#search_input').val(); window.location.replace('/search?value=' + enteredValue); }); </script>
<script> $('.delete').click(function (e) { var listNum = e.target.dataset.id; var currentTarget = $(this);
$.ajax({ method: 'DELETE', url: "/delete", data: { _id: listNum }, }).done((result) => { console.log('성공'); currentTarget.parent('li').fadeOut(); }).fail((xhr, textStatus, errorThrown) => { console.log(xhr, textStatus, errorThrown); });
}) </script>
<script> $('.edit').click(function (e) { var listNum = e.target.dataset.id; console.log(listNum);
$.ajax({ method: 'GET', url: "/edit/" + listNum, data: { _id: listNum }, }).done((result) => { console.log('성공'); window.location.replace("/edit/" + listNum); }).fail((xhr, textStatus, errorThrown) => { console.log(xhr, textStatus, errorThrown); });
}) </script>
<script> $('.chat').click(function (e) { var id = e.target.dataset.id; console.log(id); //kim console.log(typeof id); //string
$.post('/chatroom', { chatPartner: id }) .then(() => { console.log('채팅방 게시물 생성완료'); }) })
</script>
<!-- Optional JavaScript; choose one of the two! -->
<!-- Option 1: jQuery and Bootstrap Bundle (includes Popper) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
<!-- Option 2: Separate Popper and Bootstrap JS --> <!-- <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.min.js" integrity="sha384-+sLIOodYLS7CIrQpBjl+C7nPvqq+FbNUBDunl/OZv93DB7Ln/533i8e/mZXLi/P+" crossorigin="anonymous"></script> --> </body>
</html>
(server.js)
const { ObjectID } = require('mongodb');
app.post('/chatroom', function (req, res) { console.log(req.body.chatPartner); // kim console.log(typeof req.body.chatPartner); // string console.log(req.user._id); // 6470234cd18eee48e0238077 console.log(typeof req.user._id); // object
var chatPartnerId = new ObjectID(req.body.chatPartner); // Convert chatPartner to ObjectID var currentUserID = new ObjectID(req.user._id); // Convert req.user._id to ObjectID
var thingsToSave = { title: '무슨무슨채팅방', member: [chatPartnerId, currentUserID], date: new Date() };
db.collection('chatroom').insertOne(thingsToSave).then(function (result) { res.send('저장완료'); }).catch(function (error) { console.error(error); res.status(500).send('Internal Server Error'); }); });
강의 똑같이 따라했는데도
채팅하기 눌렀을 때 이런 에러가 뜨길래
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
몽고디비 버전이 "mongodb": "^3.6.4" 라서 버전이 달라서 오는 문제인 것 같아서
chat gpt 에 물어보니까
ObjectId 를 ObjectID 로 바꿔야 한다그래서 위 처럼 수정했는데
여전히 같은 에러 뜨면서
chatroom collection에 document가 추가 되지 않습니다.
몇시간째 계속 헤매고 있는데 뭐가 잘못된 걸까요ㅠㅠ
2023년 5월 26일 19:44 #84681
codingapple키 마스터objectid 길이가 이상하다는데 data-id=" <%= posts[i].author %>" 에 공백 제거해봅시다
2023년 5월 26일 20:24 #84691
코딩마스터참가자<button class="chat btn btn-secondary" data-id="<%=posts[i].author%>">채팅하기</button>
공백제거 했는데도 똑같이 안되네요 ㅠㅠ
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
같은 에러 발생됩니다
2023년 5월 27일 09:54 #84729
codingapple키 마스터req.body.chatPartner는 유저 아이디라서 objectid 형식이 아닌거같은데 ObjectID() 안에 넣지맙시다
-
글쓴이글
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
- 답변은 로그인 후 가능합니다.