Javascript Meteor中发布、订阅和数据的筛选和排序

Javascript Meteor中发布、订阅和数据的筛选和排序,javascript,node.js,meteor,iron-router,Javascript,Node.js,Meteor,Iron Router,我列出了属于具有 this.route('notifications', { path: '/notifications', template: 'notificationList', waitOn: function() { return Meteor.subscribe('notifications'); }, data: function() { return Notifications.find( {userId: Meteor.userI

我列出了属于具有

this.route('notifications', {
  path: '/notifications',
  template: 'notificationList',
  waitOn: function() {
    return Meteor.subscribe('notifications');
  },
  data: function() {
    return Notifications.find(
      {userId: Meteor.userId()},
      {sort: {createdAt: -1}}
    );
  },
  fastRender: true
});
我正在用

Meteor.publish("notifications", function () {
    return Notifications.find(
        {userId: this.userId},
        {sort: {createdAt: -1}}
    );
});
我不知道该在哪里做什么。我是否必须在
Meteor.publish()
数据:…
中筛选用户id?我必须在两个函数中进行排序吗?我已经看到,也可以在
Meteor.subscribe()
中进行排序和筛选


在这三个功能中几乎做相同的事情似乎有点多余。我做得对吗?

调用Meteor.publish时,通常需要进行排序,以便在应用限制时发送正确的文档。例如,如果您只要求10个项目,那么您需要首先对它们进行排序,以确保您拥有正确的10个项目,而不是10个随机结果

客户端的排序顺序与服务器的发布请求的排序顺序没有任何关系,也不能保证它们是相同的。例如,考虑有多个发布请求发布到客户端上的相同集合的情况,每个请求具有不同的排序顺序。以一种有用的方式对这些结果进行预排序是不可能的

因此,在访问客户机上的集合时,通常还需要请求对项目进行排序。排序不必与服务器上的排序相同(尽管通常是这样)


至于Meteor.subscribe,您在那里传递的参数取决于发布函数的参数,因此您可以让客户端将排序顺序传递给发布函数。当需要使用相同的发布函数根据排序顺序返回不同的结果时,这非常有用。此外,如果订阅和提供数据上下文的代码位于同一路由控制器中,则可以使用单个变量保持排序条件,从而减少代码重复和出错的可能性。

调用Meteor.publish时,通常需要进行排序,以便在出现错误时发送正确的文档正在应用的限制。例如,如果您只要求10个项目,那么您需要首先对它们进行排序,以确保您拥有正确的10个项目,而不是10个随机结果

客户端的排序顺序与服务器的发布请求的排序顺序没有任何关系,也不能保证它们是相同的。例如,考虑有多个发布请求发布到客户端上的相同集合的情况,每个请求具有不同的排序顺序。以一种有用的方式对这些结果进行预排序是不可能的

因此,在访问客户机上的集合时,通常还需要请求对项目进行排序。排序不必与服务器上的排序相同(尽管通常是这样)


至于Meteor.subscribe,您在那里传递的参数取决于发布函数的参数,因此您可以让客户端将排序顺序传递给发布函数。当需要使用相同的发布函数根据排序顺序返回不同的结果时,这非常有用。此外,如果订阅和提供数据上下文的代码位于同一路由控制器中,则可以使用单个变量保持排序条件,从而减少代码重复和出错的可能性。

调用Meteor.publish时,通常需要进行排序,以便在出现错误时发送正确的文档正在应用的限制。例如,如果您只要求10个项目,那么您需要首先对它们进行排序,以确保您拥有正确的10个项目,而不是10个随机结果

客户端的排序顺序与服务器的发布请求的排序顺序没有任何关系,也不能保证它们是相同的。例如,考虑有多个发布请求发布到客户端上的相同集合的情况,每个请求具有不同的排序顺序。以一种有用的方式对这些结果进行预排序是不可能的

因此,在访问客户机上的集合时,通常还需要请求对项目进行排序。排序不必与服务器上的排序相同(尽管通常是这样)


至于Meteor.subscribe,您在那里传递的参数取决于发布函数的参数,因此您可以让客户端将排序顺序传递给发布函数。当需要使用相同的发布函数根据排序顺序返回不同的结果时,这非常有用。此外,如果订阅和提供数据上下文的代码位于同一路由控制器中,则可以使用单个变量保持排序条件,从而减少代码重复和出错的可能性。

调用Meteor.publish时,通常需要进行排序,以便在出现错误时发送正确的文档正在应用的限制。例如,如果您只要求10个项目,那么您需要首先对它们进行排序,以确保您拥有正确的10个项目,而不是10个随机结果

客户端的排序顺序与服务器的发布请求的排序顺序没有任何关系,也不能保证它们是相同的。例如,考虑有多个发布请求发布到客户端上的相同集合的情况,每个请求具有不同的排序顺序。以一种有用的方式对这些结果进行预排序是不可能的

因此,在访问客户机上的集合时,通常还需要请求对项目进行排序。排序不必与服务器上的排序相同(尽管通常是这样)

至于Meteor.subscribe,您在那里传递的参数取决于发布函数的参数,因此您可以让客户端将排序顺序传递给发布函数。当需要使用相同的发布函数根据排序顺序返回不同的结果时,这非常有用。此外,如果订阅和提供数据上下文的代码位于同一路由控制器中,则