动态添加元素到页面顶部

时间:2015-07-12 00:05:27

标签: mongodb meteor

问题:我的表有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> 

1 个答案:

答案 0 :(得分:1)

为什么不对降序进行排序?

{sort:{date:-1}}

干杯, 汤姆

更新:

你可以在我准备的MeteorPad上找到一个实例:

http://meteorpad.com/pad/Ba5DTe94NjFi3ZTPA/Playground_Flow-Router_Chat

您必须在客户端进行排序,而不是在发布方法中。

这就是为什么你得到第一次排序但然后就像插入返回一样。

如果您在客户端find()进行排序,则minimongo将在每个新文档上执行此操作。

希望这对你有所帮助。 汤姆