在 Meteor 中对每个会话进行唯一排序?

sorting each session uniquely in Meteor?

我有发布设置和会话,可以将消息发送到正确的房间。

我目前遇到的问题是如何限制返回的消息,因此如果一个房间中有 200 条消息,并且发布了另一条消息,则最旧的消息将被删除。

//how messages are created
    Meteor.methods({
      newMessage: function (message) {
          message.user = Meteor.userId();
          Messages.insert(message);
      }
    }); 

//how messages are published
    Meteor.publish('messages', function (channel) {
        return Messages.find({channel: channel});
    });

//how chatrooms are published
    Meteor.publish('channels', function () {
        return Channels.find();
    });

问题是,通常我会把它放在出版物中来做到这一点 {sort:{limit:15}}
但是,这在这种情况下不起作用,会导致所有消息都受到限制。
它们需要按房间排序,或者,好吧,按 session:key 排序。

有解决这个问题的简单方法吗?或者我必须在服务器端创建一个方法到 运行 .forEach channel?

没有像样的方法可以在单个光标中发布每个房间的前 15 条帖子。如果房间数量很少,则发布游标数组可能更有意义,数组中的每个游标对应一个房间。

Meteor.publish('messages', function (channel) {
    return Messages.find({channel: channel}, {limit: 15});
});

我不知道我是怎么错过这个的,但显然我可以这样做。

嗯。

(channel:channel对应当前设置的session名称)