2 글 보임 - 1 에서 2 까지 (총 2 중에서)
-
글쓴이글
-
2024년 1월 27일 01:20 #111522
김도균참가자안녕하세요 선생님 다름이 아니라 제가 숙제로 채팅방 모여있는 곳을 따로 구현 하라고 하셔서 하는 중인데 저는 MyPage에 하려고
app.get('/mypage', isLogin ,async (req, res)=>{ var data = await db.collection('member').findOne({_id : req.user._id}) var chatData = await db.collection("chat").find({$or : [ { chatMember : {to : req.user._id}}, { chatMember : {from : req.user._id}}] }).toArray()
console.log(await db.collection("chat").findOne({chatMember : {to : req.user._id}})) console.log(chatData)
var reqUser = req.user
if(reqUser == null){ var tempRepUser = 0 res.render('mypage.ejs', {data: data, member : tempRepUser}) }else{ res.render('mypage.ejs', {data: data, member : reqUser}) }
}) mypage에 이런식으로 코드를 짰습니다 그리고 chat 관련 코드는 아래와 같이 짰구요
app.get("/chat/:id", isLogin, async (req, res)=>{
var reqParamsID = await db.collection("post").findOne({_id : new ObjectId(req.params.id)}) var chatContent = await db.collection("chat").find({ $or: [ { chatMember: { to: new ObjectId(reqParamsID.user), from: new ObjectId(req.user._id) } }, { chatMember: { to: new ObjectId(req.user._id), from: new ObjectId(reqParamsID.user) } } ]}).toArray()
var reqUser = req.user if(reqUser == null){ let tempUserData = 0 res.render('chat.ejs', {data : reqParamsID, chatData : chatContent, reqUser : reqUser, member : tempUserData}) }else{ res.render('chat.ejs', {data : reqParamsID, chatData : chatContent, reqUser : reqUser, member : reqUser}) }
})
app.post('/chat', isLogin, async (req, res)=>{
var chatRoomName = req.body.parentUser + " 와 " + req.user.nickName + " 의 채팅방"
try { var insertDb = db.collection("chat").insertOne({ parentUserName: req.body.parentUser, chatMember: {to : new ObjectId(req.body.parentUserObjectId), from : new ObjectId(req.user._id)}, chatUserName: req.user.nickName, chatTime : "1 분전", content : req.body.chatContent, roomName : chatRoomName })
res.status(200).send("전송 완료") }catch (err){ res.status(500).send("Internal Server Error") }
}) 그런데 문제는 채팅 자체를 해봤을 때는 데이터를 주고 받는 부분과 클라이언트 부분도 문제가 없었지만 myPage로 일부 데이터를 보내는 과정에서 var chatContent = await db.collection("chat").find({ $or: [ { chatMember: { to: new ObjectId(reqParamsID.user), from: new ObjectId(req.user._id) } }, { chatMember: { to: new ObjectId(req.user._id), from: new ObjectId(reqParamsID.user) } } ]}).toArray() 해당 쿼리가 반환 값을 자꾸 []를 반환해서 고민 중입니다 참고로 몽고DB 안에 데이터는 chatMember: Object { to: ObjectId('65aeb5b0b31b12e463753d20') from: ObjectId('65a04bfc3eebcee7feeba785')} 이런식으로 Object 객체 2개가 있고 현재 제가 ObjectId('65a04bfc3eebcee7feeba785') 요걸로 로그인 한 상황이라 위의 쿼리로는 나와야 한다고 생각해서요 해당 부분 문의드립니다 감사합니다
-
글쓴이글
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
- 답변은 로그인 후 가능합니다.