服务器端 meteor .publish : working with a client variable

标签 meteor chat publish-subscribe

我正在构建一个聊天,并根据当前用户选择的聊天室,我想使用此功能发布消息:

Meteor.publish('messages',function(){
  return Messages.find(
    {chatId: 'QMMjBgCvLcnLvJPvx'},
    sort:{timestamp: -1}
  });
});

现在 chatId 仍然是硬编码的,但它需要是动态的。 chatId 在 URL 中传递(例如.../chat/QMMjBgCvLcnLvJPvx)。在基于客户端的代码中,我用来读取 chatId:

var chatId = Router.current().params._id;

铁路由器

但这在服务器端不起作用。有没有办法将 chatId 从 URL 发送到服务器,所以我使用上面提到的 Meteor.publish。任何帮助表示赞赏:)

最佳答案

订阅时传入变量即:

Meteor.subscribe("messages", {chatId: Session.get("current-room")})

在出版物中:

Meteor.publish('messages',function(chatId){
  return Messages.find(
    {chatId: chatId},
    sort:{timestamp: -1}
  });
});

关于服务器端 meteor .publish : working with a client variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37666322/

相关文章:

python - 如何用一个线程监听redis的所有订阅 channel ?

javascript - 如何为 Meteor 事件创建另一个输入范围

meteor - 这个 find 方法的 $ne 是从哪里来的?

python - 接受与套接字的无限连接

swift - 'dispatch_get_main_queue()' 的模糊使用 - XMPP

java - 模块集群和 JMS

mysql - 类似 Stackoverflow 的评论数据库模式

meteor - 我如何保持 meteor 客户端同步? (动画片)

javascript - 添加loginWith<service>中未包含的外部登录服务

ruby-on-rails - 在 Rails 中实现 Pusher 聊天