Mongodb model id changing

Viewed 16

I am working on a basic express chat app, which has rooms,but for some reason the room I'd changes

  • Here is the route script

const singleRoom = async(req: any, res: Response)=> {
  const roomId = req.params.id;
  if (roomId !== "favicon.png") {
    const room = await Room.findById(roomId);
    if (room) {
      res.render("room", {
        room: room,
        user: req.user,
        title: room.name
      })
    } else {
      res.redirect("/rooms")
    }} else {
    console.log(req.params)
    console.log(req.param("id"))
  }
}

Here is the view

extends layout

block content
  div(class="p-2 main h-screen fixed"  id="main")
   a(href="/rooms") rooms
   div(class="border p-2 text-center shadow-xl h-[15vh] m-4"  x-data="{main: true,desc: false,toggle:()=>{this.main = !this.main;this.desc=!this.desc ;alert(this.desc) }}")
     button(@click="toggle" class="border rounded-xl shadow") Toggle
     h1=room.name
     div(class="p-2 m-2 h-[75vh]" x-show="main")
       rooms-msg(messages=room.messages)
       input(type="hidden" id="user" value=user )
       input(type="hidden" id="room" value=room )
       input(name="message" id="message" placeholder="send new message ")
       button(class="p-2 rounded shadow" id="send") Send
     div(class="m-2 p-2" x-show="desc" x-transition)
       h1=room.name
       h3 Members
       each member in room.members
         if room.admin.displayName === member.displayName 
          div.p-2
           h4=member.displayName
           p  Admin
         else
            div.p-2
              h1=member.displayName
  script.
        document.addEventListener("alpine:init", ()=> {
        
         })
  
  script(src="/javascripts/pages/room.js")
  
  
  

And here is the room.js

(()=>{
  const btn = document.querySelector("#send")
let {
  value: room
} = document.querySelector("#room")
let {
  value: user
} = document.querySelector("#user")
room = JSON.parse(room)
user = JSON.parse(user)
console.log(room._id)
console.log(user)
const send = (e)=> {
  
const {
  value
} = document.querySelector("#message")
  const msg = {
    text: value,
    sender: user,
    time: new Date()
  }
   room.messages.push(msg)
  socket.emit("send message",room, room._id)
  console.log(e)
}
btn.addEventListener("click", send)



//
})();

Here is the socket listener


socket.on("send message", async (room, id)=> {
  const r = await Room.findByIdAndUpdate(room._id, room)
  if(r){
  console.log(r)
}else{
console.log(id)
}
  // Successful: r
})

The room always return null,so the id gets logged,I noticed the id was different from the one in the url,so I tried again and it logged a different id,I am really confused.Thanks in anticipation

0 Answers
Related