问题:我的表有tr,表中有数据,当我在Mongo中插入元素并将其发布在我的页面上时,元素添加在表格的底部
Posts = new Mongo.Collection('posts');
Meteor.publish('allPosts', function(){
return Posts.find({}, { sort: { date: -1 }} );
});
Meteor.subscribe("allPosts");
Posts.insert({
date: 1
})
Posts.insert({
date: 2
})
Posts.insert({
date: 3
})
<table class=" table">
{{#each posts}}
{{> postJobs}}
{{/each}}
</table>
<template name="postJobs">
<tr class="smallInfo">
<td>{{date}}</td>
</tr>
</template>
在DOM中我有:
<table>
<tr>
<td>1</td> // must be 3
</tr>
<tr>
<td>2</td> // must be 2
</tr>
<tr>
<td>3</td> // must be 1
</tr>
</table>
我的所有上一次插入都必须添加到我的页面顶部(表格)
编辑: 我在集合中动态插入的问题(我知道 -1 gramatik错误) 示例:
Meteor.startup(function(){
Meteor.setTimeout(function(){Test("10");}, 1000);
function Test(x)
{
Posts.insert( {
submitDate: moment().format()
});
}
Meteor.setTimeout(function(){Test("10");}, 10000);
如果我按submitDate排序,它将显示如下:
<tr><td>10-10-10</td></tr> // must be 10-10-20
<tr><td>10-10-20</td></tr> // must be 10-10-10
但是当我刷新我的页面(F5)时一切正常
<tr><td>10-10-20</td></tr>
<tr><td>10-10-10</td></tr>
答案 0 :(得分:1)
为什么不对降序进行排序?
{sort:{date:-1}}
干杯, 汤姆
更新:
你可以在我准备的MeteorPad上找到一个实例:
http://meteorpad.com/pad/Ba5DTe94NjFi3ZTPA/Playground_Flow-Router_Chat
您必须在客户端进行排序,而不是在发布方法中。
这就是为什么你得到第一次排序但然后就像插入返回一样。
如果您在客户端find()
进行排序,则minimongo将在每个新文档上执行此操作。
希望这对你有所帮助。 汤姆