sql >> データベース >  >> NoSQL >> MongoDB

MeteorJSテンプレートにデータが表示されない、表示されない

    この場合、それは主にMeteorのデータモデルの誤解に関するものです。

    メソッド呼び出しを使用してデータを送信することは可能ですが、通常はパブリケーションとサブスクリプションを使用することをお勧めします。 クライアントにデータを送信します。これらには、クエリがライブであるというほとんど魔法のような特性があります。 -つまり、クエリの更新はすべてクライアントに自動的に送信されます。あなたが持っている現在のコードは、それが適切に機能した場合、ライブデータを持っていません。具体的な問題は、Meteor.call は非同期であるため、メッセージヘルパーには何も表示されません。

    代わりに、これがあなたがしたいことです。サーバー上で、パブリケーションを設定します メッセージコレクションの例:

    Meteor.publish("someWeirdName", function() {
      return Messages.find({},{ sort: { timestamp:-1}, limit: 20});
    });
    

    コードとの違いに注意してください。fetch()はありません。 、ライブカーソルと20が必要なため おそらく制限オプションとして意図したものです。これをsomeWeirdNameとも呼んでいることに注意してください それが出版物の名前だからです 、クライアントでサブスクライブするために使用するコレクションではありません。詳細な説明については、この投稿 をご覧ください。 。

    次に、クライアントでは、次のものが必要です。

    Meteor.subscribe("someWeirdName");
    
    Template.messages.helpers({
        showMessages: function(){
            return Messages.find();
        }
    });
    

    Meteor.subscribe("Messages")の前回の呼び出しに注意してください Messagesという名前の出版物がなかったため、何もしていませんでした 。また、メッセージのクライアント側キャッシュを使用して、メッセージを表示するためのカーソルを作成します。

    また、このコードはすべて、サーバーとクライアントの両方で次のように宣言されている必要があります。

    Messages = new Mongo.Collection("callMeWhateverYouWant");
    

    カスタムパブリケーション 。基盤となるデータベースのコレクションを識別するだけです。



    1. MongoDB C#プロパティ値を含むオブジェクトのクエリ配列

    2. mongoDBがdbレプリカに特定のデータを追加する

    3. mongoidセッションを読み取り専用にする

    4. redis-trib.rbを使用してクラスターを作成するときに接続エラーが発生しますか?