0

以下に示すように、Mongo コレクションを作成するコードを以下に示します。ただし、Meteor.isClient スコープ内からコレクションにアクセスしようとすると、エラーが発生します。誰でも私の間違いを見つけることができます。

ImagesCollection  = new Mongo.Collection("Images");
Images  = new Mongo.Collection("Images");

if(Meteor.isClient){
  Template.body.helpers({ images :
        function() {
          console.log("Template Loade");
          return Images.find({},{sort: -1 });
        }
  }) ;

  Template.Images.events({
      'click .js-image' : function(event){
        $(event.target).css("Width", "50px");
      } ,
      'click .js-del-image' : function(event){
          var image_id  = this._id ;
          $("#"+image_id).hide({slow });
          Images.remove({"_id" : image_id});
      },

      'click .js-rate-image' : function(event){
          var  rating =  $(event.currentTarget).data("userrating");
          var image_id =  this.id ;

          Images.find({"_id": image_id});
      }


  });

}

私のStartup.jsの内容も以下の通りです

if(Meteor.isServer){

    Meteor.startup(function(){

      for(var i  = 0 ; i<=23 ;  i++)
      {
          Images.insert({
             'img_src' :  'img_'+i+'.jpg' ,
             'img_alt'  :  'Image number' +  i
           });
            console.log(Images.find().count);
      }
    });
  }
4

3 に答える 3

0
consle.log("Template Loade");

エラーを指定していないため、上記の行でエラーが発生します。

于 2016-06-20T17:09:35.563 に答える
0

これが問題かどうかはわかりませんが、「画像」コレクションを 2 回初期化しているのはなぜですか?

ImagesCollection = new Mongo.Collection("Images");

Images = new Mongo.Collection("Images");

また、コードのどこにも ImagesCollection は使用されていません。この行の 1 つを削除してみてください。

于 2016-06-21T06:17:27.490 に答える
0

あなたが提供したコードから、私が見ることができる2つの問題があります。

まず、imagesテンプレート ヘルパーで、Images.find()関数呼び出しの 2 番目のパラメーターが正しくありません。並べ替え操作のドキュメント フィールドの指定がありません。この 2 番目のパラメーターは、形式である必要があります{sort: {'document_field': -1}}。表示されているエラー テキストは提供されていませんが、エラーは Mongo がクエリを処理できないことに関係していると思われます。これがその理由です。

Images第 2 に、これはそれほど深刻ではなく、クライアントのコレクションにアクセスできないという問題の原因にはならないはずですが、サーバー コードのconsole.log()ステートメントでは、関数呼び出しから返されたカーソルのプロパティであるかのようにアクセスしています。実際には、これは関数であり、次のように呼び出す必要があります。Meteor.startup()countImages.find()Images.find().count()

また、余談ですが、定義した 2 つのコレクションに異なる名前を付けることをお勧めします。両方に同じ名前を付けると、Mongo シェルを介してデータを操作しようとしている場合に問題が発生する可能性があります。

于 2016-06-21T05:13:32.593 に答える