2017-12-24 7 views
0

クリックイベントにMongoDBのIDを取得する:MeteorJSは、私は私のMeteorJSのアプリで、次のMongoのコレクションを持っている

//Server side, load all the images 
Images = new Mongo.Collection('images'); 
Meteor.startup(() => { 
    if(Images.find().count() == 0){ 
    for(var i = 1; i < 23; i++){ 
     Images.insert({ 
     src:"img_"+i+".jpg", 
     alt:"image "+i 
     }); 
    } 
    } 
}); 

私はテンプレートにそれを渡し、それが動作します。しかし、私は画像のMongoDB id(MongoDBの主キー/一意のID)を取得したいと考えています。私は次のコードでそれを行います:

//Client side, get the collection and load it to the template 
Images = new Mongo.Collection('images'); 

Template.images.helpers({images:Images.find()}); 

Template.images.events({ 
    'click .js-del-image': (event) => { 
    var imageId = event._id; 
    console.log(imageId); 
    } 
}); 

これは私にundefinedを与えます。私は間違って何をしていますか?私はthis._idが私にMongoDB IDを与えるべきだと思った。レコードの

が、これは私のテンプレートで、 _id属性を記入します:

<template name="images"> 
     <div class="row"> 
     {{#each images}} 
     <div class="col-xs-12 col-md-3" id="{{_id}}"> 
     <div class="thumbnail"> 
      <img class="js-image img-responsive thumbnail-img" src="{{src}}" 
      alt="{{alt}}" /> 

      <div class="caption"> 
       <p>{{alt}}</p> 
       <button class="js-del-image btn btn-warning">delete</button> 
      </div> 
     </div> 
     </div> <!--/col --> 
     {{/each}} 
    </div> <!--/row --> 
</template> 
+0

これはMeteorJsとは関係ありません。とにかく、あなたのボタンにIDを渡すと、あなたのevebtにevent.target.idまたは$ event.currentTargetの属性があるかもしれません。 – iiro

+0

ねえ、私はあなたが誤解していると思います。私はボタンのid属性をしたくない。 mongoDBから取得している画像のIDが必要です。これは、IDの値に基づいてDBから削除したいからです。質問を編集してより明確になるようにします。 – pydoge

+0

私は理解しました。イメージidをボタンのidに置きます。 Id = "{_ id}"。私は最初に理解するためにmeteorjsチュートリアルを行うべきだと思います。 – iiro

答えて

0

問題は、関数の宣言にあった:

  • (event) => { ... }undefined_idを持っているようです。
  • function(event) {...}は正しいコンテキストを持っているようです。

(event) => {...}function(){...}対宣言の詳細についてはthis answerを参照してください。

関連する問題