这是我从Items集合中返回的列表
Template.itemsList.helpers({
items: function () {
return Items.find({});
}
});
当我回到/items/3
路线时,如果我访问第3项路线/items
,则列表为
如果点击第2项等同样的事情。
是的,如果我使用Items.find({}, {sort: {name: 1}})
订购该集合,然后访问/items
路线,则列表会正确显示。
为什么我注意到这一点 - 对我来说非常奇怪 - 行为?
答案 0 :(得分:0)
这种行为一开始可能看起来很奇怪,但实际上并非如此。如果您没有明确指定排序顺序,则会以任意顺序返回结果,该顺序可能会随时间而变化。
这取决于后备数据库的实现顺序。它可以按顺序将文档添加到数据库中。或者可能按上次更新或提取的文档的顺序排列。这就是你似乎正在经历的事情。这是一个数据库实现细节,您应该从不依赖此行为。
如果订单对您很重要,请务必明确指定!
Meteor使用Minimongo来模仿浏览器中的mongo api。我不太了解它的实现,但它可以很好地使用一个列表或一堆收集文档,其顺序受文档访问的影响。但最后一点只是猜测我......