3

投稿を時系列で表示するチャット ルームを構築しています。現在、「エントリ」テンプレートの送信イベントで、クライアント js でユーザーの投稿の時間を設定しています。

Template.entry.events =  {
  'submit': function(e){
    e.preventDefault();
    //console.log(this.userId());
    var user = Meteor.user();
    var roomName = Session.get('currentRoomName');
    Messages.insert({
      user: user,
      room_name: roomName,
      message: $('#message').val(),
      created_on: new Date().getTime()
    });
    $("#message").val('');
  }
};

私の問題は、この日付がクライアントで設定されているため、ユーザーが自分のマシンで時刻を変更すると、ユーザーが現在の会話の前後に投稿できるように記録されることです。理想的には、サーバーの現在の UTC 時刻を反映するために新しいチャット エントリを受信した後、サーバーの created_on 時刻を更新し、入ってくる値を修正できるようにすることができます。レイテンシー補正など

II に関する多くの Meteor ドキュメントを読んだことがありますが、.observe() を使用してこれを解決できるのではないかと疑っていますが、私は Meteor と Mongodb の両方に不慣れです。エントリ コレクション内のすべてのドキュメントを観察するのはおかしいでしょうか? 新しいエントリのみを観察することは可能ですか?

私も auth ブランチを使用しています - それが違いを生むかどうかはわかりません。

チャット ルームに多くのユーザーがいた場合、この非質問が関連してしまう可能性があります。

これがMongo/Meteorで非常に簡単なものであり、私が見逃している場合はお詫び申し上げます。

4

2 に答える 2

0

authブランチで導入されたACLを強くお勧めします。挿入/更新/削除/フェッチ時に、いくつかの検証や変更を行うことができます。Meteor.Collection.prototype.allowソースファイルの下を見てくださいpackages/mongo-livedata/collection.js

于 2012-08-22T01:14:06.727 に答える