Показывать сообщения чата для определенного идентификатора сообщения - PullRequest
0 голосов
/ 01 ноября 2019

В настоящее время я хотел показать сообщения чата от определенного идентификатора поста в турнире, вот как я это делаю, но мне не удалось показать его на основе идентификатора поста в турнире. Есть ли что-то, что мне не хватает? Или потому, что мои маршруты / chat не передали req.params.id определенного сообщения турнира?

UPDATE (конечные точки чата)

app.get('/chat', function(req, res){
    Tournament.findById(req.params.id, function(err, tournament){
        Message.find({tournament:req.params.id}, function(err, messages){
            res.send(messages)
        })
    })
});
app.post('/chat', function(req, res){
    let message = new Message(req.body)
    message.save((err)=>{
        if(err){
            res.sendStatus(500);
        }
        else{
            io.emit('message', req.body)
            res.sendStatus(200)
        }
    })
})

(jquery)

$(()=>{
  const socket = io()
  $('#send').click(()=>{
    let message  = {
      tournament: $('#tournament').val(),
      name: $('#name').val(),
      message: $('#message').val()
    }
    postMessage(message)
  })
  getMessages()
  socket.on('message', addMessage)

  function addMessage(message){
    $('#messages').append(`<div class='container-chat'><div id='container-inline'><h6>${message.name}:</h6> <p>${message.message}</p></div></div>`)
  }
  function getMessages(){
    $.get('http://localhost:3000/chat', (data)=>{
      data.forEach(addMessage);
    })
  }
  function postMessage(message){
    $.post('http://localhost:3000/chat', message)
  }
})

(tour.pug)

                            input#tournament.form-control.input-sm.chat_input(type='hidden', placeholder='Tournament Id', value=tournament._id)
                            input#name.form-control.input-sm.chat_input(type='hidden', placeholder='User Username', value=user.username)
                            span.input-group-btn
                            input#message.form-control.input-sm.chat_input(type='text', placeholder='Type message')
                            span.input-group-btn
                            button#send.btn.btn-outline-secondary.btn-sm Send

(MessageSchema)

let MessageSchema = mongoose.Schema({
    tournament:{
        type: String
    },
    name:{
        type: String
    },
    message:{
        type: String
    },
    date: { type: Date, default: Date.now }
});

1 Ответ

0 голосов
/ 01 ноября 2019

Измените свой файл сценария следующим образом: вы пропустили правильные идентификаторы параметров и 'http' в ваших URL.

$(()=>{
const socket = io();

$('#send').click(()=>{
let message = {
tournament: $('#tournament').val(),
name: $('#name').val(),
message: $('#message').val()
}
postMessage(message)
})
getMessages()
socket.on('message', addMessage)

function addMessage(message){
$('#messages').append(`<div class='container-chat'><div id='container-inline'><h6>${message.name}:</h6> <p>${message.message}</p></div></div>`)
}
function getMessages(){
$.get('http://localhost:3000/chat' + $('#tournament').val(), (data)=>{
data.forEach(addMessage);
})
}
function postMessage(message){
$.post('http://localhost:3000/chat', message)
}
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...