socket.io и фильтрация mongodb по идентификатору объекта - PullRequest
2 голосов
/ 11 января 2020

Я пытаюсь получить документ из коллекции mongoDB по идентификатору объекта при использовании Socket.io. Поскольку findById() здесь не работает, и я не могу сделать find({ "_id" : _id}), я не знаю, как продолжить.

Это возвращает мне всю мою коллекцию на стороне клиента. Но я просто хочу один документ с указанным _id.

_id приходит на стороне сервера. Я проверил.

Заранее спасибо

io.on('connection', socket => {
  console.log('user arrived');
  socket.emit('chat-message', 'hello-world');
  socket.on('send-chat-id', _id => {
    console.log(_id);
    const chats = db.collection('chats');
    chats.find().toArray(function(error, result) { <------
      if (error) {
        throw error;
      }
      socket.emit('chat-messages', result);
    });
  });
});

1 Ответ

1 голос
/ 11 января 2020

Всякий раз, когда вы используете findById(), вам нужно преобразовать параметр, передаваемый из string (из пользовательского интерфейса) в ObjectId, используя строку ниже:

const objectId = new ObjectId(_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...