访问的最后一项成为列表

时间:2015-09-02 11:27:44

标签: meteor meteor-blaze

这是我从Items集合中返回的列表

Template.itemsList.helpers({
    items: function () {
        return Items.find({});
    }
});
  • 第1项
  • 第2项
  • 第3项
  • ...

当我回到/items/3路线时,如果我访问第3项路线/items,则列表为

  • 第3项
  • 第1项
  • 第2项
  • ...

如果点击第2项等同样的事情。

是的,如果我使用Items.find({}, {sort: {name: 1}})订购该集合,然后访问/items路线,则列表会正确显示。

为什么我注意到这一点 - 对我来说非常奇怪 - 行为?

1 个答案:

答案 0 :(得分:0)

这种行为一开始可能看起来很奇怪,但实际上并非如此。如果您没有明确指定排序顺序,则会以任意顺序返回结果,该顺序可能会随时间而变化。

这取决于后备数据库的实现顺序。它可以按顺序将文档添加到数据库中。或者可能按上次更新或提取的文档的顺序排列。这就是你似乎正在经历的事情。这是一个数据库实现细节,您应该从不依赖此行为。

如果订单对您很重要,请务必明确指定!

Meteor使用Minimongo来模仿浏览器中的mongo api。我不太了解它的实现,但它可以很好地使用一个列表或一堆收集文档,其顺序受文档访问的影响。但最后一点只是猜测我......