在 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名称)
我有发布设置和会话,可以将消息发送到正确的房间。
我目前遇到的问题是如何限制返回的消息,因此如果一个房间中有 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名称)