【问题标题】:Do I need to sort on both publication and client?我需要对出版物和客户进行排序吗?
【发布时间】:2014-05-26 05:24:21
【问题描述】:

假设我想显示一个家庭的排序列表:

# publications
Meteor.publish "families", ->
  Families.find({}, {sort:{name:1}})

# routes
@route 'families',
    path: '/families'
    waitOn: ->
      return Meteor.subscribe('families')
    data: ->
      families: Families.find() 
      # or
      families: Families.find({}, {sort:{name:1}})

我进行了测试,似乎两者都工作正常。这里的最佳做法是什么?

【问题讨论】:

    标签: meteor


    【解决方案1】:

    所以正如我在this question 的回答中解释的那样,发布功能中的排序对客户端上的文档顺序没有影响。因此,如果您这样做,您应该会看到相同的结果:

    Meteor.publish "families", ->
      Families.find()
    

    至于您的模板数据,应该指定排序(您的第二选择)。由于插入顺序的原因,这两个选项可能会产生相同的结果,但这是巧合。

    【讨论】:

      【解决方案2】:

      不是专家,我在这里看到的看起来像是在服务器上排序和在客户端排序之间的替代方案。好吧,无论如何都必须为每个请求完成工作 - 让它在客户端完成将减轻服务器的负担,服务器通常无论如何都有足够的工作......

      后者也是如此。

      【讨论】:

      • 通常正确的答案是按照您的说法将工作推送给客户。在这种情况下,您必须这样做,因为 DDP 不保证顺序,因此在服务器上排序将是一种浪费。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2018-11-30
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 2016-02-14
      相关资源
      最近更新 更多