3

2 つのコレクションの公開と購読に成功しました。クライアント側では、サブスクライブ メソッドを自動実行関数に入れ、いくつかのセッション変数を変更するたびにコレクションを更新します。私のデータモデルは次のようになります。

Topics: {
    _id: ObjectID,
    comments: [
        commentId1,
        commentId2,
        etc...
    ]
}

Comments: {
    _id: ObjectID,
}

新しいコメントを作成するときは、コレクションにコメントを挿入し、配列でコレクションCommentsを更新します。この後、流星がページを再レンダリングすると予想しましたが、これは、トピックセッション変数を変更して元に戻すか、ページを手動でリロードした場合にのみ発生します...その後、流星はサブスクリプションを更新します。これはなぜですか?私は何かを逃したと思います...しかし、ドキュメントは私に手がかりを与えませんでした。Topics$push

4

1 に答える 1

0

その理由は、クライアント側でデータベースの挿入を実行しているためだと思いますが、ページが再度レンダリングされない理由がわからないのです。

それを行うもう1つの方法は、次のように使用してサーバー側で挿入を実行することですMeteor.call()

if (Meteor.isClient){
  ....
  ....
  Meteor.call('addComment', 'your_new_comment'); 
  ....
} 

そしてサーバー側では:

if(Meteor.isServer){

  Meteor.Methods({
   'addComment' : function(data){
     //your insertion code here.
     Comments.insert(data);
   }
  });
}

同じことができますTopics。これにより、サーバー側の関連データが更新されます。published-subscribedこれらのデータは既にあるため、セッション変数が変更されなくても、クライアントで自動的に公開されます。

于 2013-03-04T05:28:18.177 に答える