socket.io 和按对象 id 过滤 mongodb

Posted

技术标签:

【中文标题】socket.io 和按对象 id 过滤 mongodb【英文标题】:socket.io and filtering mongodb by object id 【发布时间】:2020-04-28 13:50:37 【问题描述】:

我正在尝试在使用 Socket.io 时通过对象 id 从 mongoDB 集合中获取文档。 由于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】:

每当您使用findById() 时,您都需要使用以下行将传入的参数从string(来自UI)转换为ObjectId

const objectId = new ObjectId(_id)

【讨论】:

以上是关于socket.io 和按对象 id 过滤 mongodb的主要内容,如果未能解决你的问题,请参考以下文章

如何更新房间内所有客户端的套接字对象? (socket.io)

Socket.IO API Socket

io.sockets.socket(socket_id).emit() - 没有方法'socket'

Socket.io 通过 id 获取套接字不起作用

Socket.IO 1.0.x:通过 id 获取套接字

在Socket.IO 1.0中将消息发送到特定ID