2017-12-04 26 views
0

Firebaseでオブジェクトを更新しようとしているのは、そのプロパティの1つが存在しない場合だけです。if条件に基づいてFirebaseのオブジェクトを更新する

これまでのロジックは、定義された旅行の写真をループし、この写真の中に「location」というプロパティが見つからない場合は、プロパティ「location」を挿入してオブジェクトを更新しますプロパティ "coord"、 "locationname"、 "regioncode"、 "thumbnailurl"を持つオブジェクト)。

問題は、ページを読み込んだ後、プロパティ "location"を持たない写真にオブジェクト "location"が挿入されないということです。

私のデータベース構造:

enter image description here

マイJS:

db.ref('photos/' + owneruid + '/trips/' + tripuid).once('value').then(snap => { 
    var photos = snap.val() 
    for (var key in photos) { 
     console.log('Photo ID is ' + key) 
     var thisPhoto = photos[key] 
     this.photos.push(thisPhoto) 
     var hasLocation = 'location'; 
     if(photos[key].hasOwnProperty(hasLocation)){ 
      console.log("location exists") 
     } 
     else{ 
      console.log("NO LOCATION") 
      var location = {coord:"", locationname:"", regioncode:"", thumbnailurl:""} 
      function writeLocation(location) { 
       db.ref('photos/' + owneruid + '/trips/' + tripuid + thisPhoto).update(location) 
      } 
      this.photos.push(thisPhoto) 
      } 
     } 
     this.photosDataIsReady = true 
}) 

我々はコンソールで見ることができるように、ループ内の条件が動作するかどうか:

enter image description here

+1

あなたがオブジェクトを更新するときに、あなたが直面しているどのような問題は言及していませんか? firebaseオブジェクトを更新する方法がわからない、または何らかの例外が発生しているということです。 –

+0

基本オブジェクトを更新できない場合は、firebaseがどのようにオブジェクトを保持/更新するかを理解する必要があります。 https://firebase.google.com/docs/database/admin/save-dataこのリンクをクリックすると役立ちます。 –

+0

ありがとうMurtaza、あなたは正しい、私は説明しなかった。だから基本的には、 "場所"が存在しない各写真のオブジェクト "場所"を作成する必要がありますが、私はコードを繰り返し実行し、オブジェクト "場所"はまだ追加されていません – marcvander

答えて

0

このコードを試してください

db.ref('photos/' + owneruid + '/trips/' + tripuid).once('value').then(snap => { 
 
    var photos = snap.val() 
 
    for (var key in photos) { 
 
     console.log('Photo ID is ' + key) 
 
     var thisPhoto = photos[key] 
 
     this.photos.push(thisPhoto) 
 
     var hasLocation = 'location'; 
 
     if(photos[key].hasOwnProperty(hasLocation)){ 
 
      console.log("location exists") 
 
     } 
 
     else{ 
 
      console.log("NO LOCATION") 
 
      var location = {coord:"", locationname:"", regioncode:"", thumbnailurl:""} 
 
       db.ref('photos/' + owneruid + '/trips/' + tripuid + thisPhoto).update(location); 
 
      this.photos.push(thisPhoto) 
 
      } 
 
     } 
 
     this.photosDataIsReady = true 
 
})

関連する問題