流星 - 仅在刷新后排序

时间:2014-07-01 16:32:42

标签: javascript sorting meteor iron-router

我对流星很新,所以这可能是也可能不是正确的行为,虽然我不确定如何“修复”这个例子来做我想做的事情。

我正在创建一个聊天室应用程序,以学习Meteor,当我向“聊天室”添加消息时,所有消息都会发送,但在刷新页面之前不会排序到正确的顺序。这些消息都存储有时间戳,该时间戳保存值Date.parse();

router.js

Router.configure({
  layoutTemplate: 'layout',
  notFoundTemplate: 'notFound',
  loadingTemplate: 'loading'
});

Router.map(function () {
  this.route('home', {
    path: '/',
    template: 'home'
  });

  this.route('room', {
    path: '/room',
    template: 'room',
    waitOn:function(){
        return [Meteor.subscribe('rooms'),
               Meteor.subscribe('messages')];
    },
    data: function() { 
        //console.log(Rooms.find().fetch())
        return {roomUsers: Rooms.find(),
                userMessages: Messages.find({},{sort: {timestamp: 'desc'}})};
    },
    action: function(){
        if(this.ready()){
            this.render();
            console.log(Rooms.find({userId:Meteor.userId()}).count());
            if(Rooms.find({userId:Meteor.userId()}).count() < 1){
                console.log("This happens");
                Rooms.insert({username: Meteor.user().emails[0].address,roomId: 1,userId:Meteor.userId()});
            }
        }
    }
  });
});

room.html

<template name="room">
    <div class="col-xs-10 chatMain">
        <div class="row">
            <div class="col-xs-12 chatContainer">
                {{#each userMessages}}
                    <div class="message">
                        <div class="uname">
                            {{username}}    
                        </div>
                        <div class="text">
                            {{message}}
                        </div>
                    </div>
                {{/each}}
            </div>
            <div class="col-xs-12 colRem">
                <div class="chatbox">
                    <form>
                        <textarea type="text" id="message"></textarea>
                        <button>Send!</button>
                    </form>
                </div>
            </div>
        </div>          
    </div>
    <div class="col-xs-2 chatUsers">
        <ul>
            {{#each roomUsers}}
                <li>{{username}}</li>
            {{/each}}
        </ul>
    </div>    
</template> 

Before refresh 此图像在刷新之前。 After refresh 这就是我希望每次发送邮件时自动发生的事情。

1 个答案:

答案 0 :(得分:0)

我想出了问题,不知怎的,客户端上的日期是NaN虽然在服务器端产生了正确的时间戳,但我只是使用了以下问题来解决我的问题,

Jquery Date.parse returning NaN in Chrome browser?