angular - Firebase - Firebase Gerçek Zamanlı Veritabanında bir nesneyi nasıl güncelleyebilirim


Mevcut bir nesne nasıl güncellenir.

Firebase Realtime Database'deki bir nesneyi güncellerken sorun yaşıyorum.

Bunu nasıl yapacağını bilen var mı?

Ben kullanıyorum: Angular ve TypeScript.

İşte benim mevcut TypeScript kodum:

updateProfile = (profile): any => {
  return new Promise((resolve, reject) => { 
    var refProfile = new Firebase("https://poolcover.firebaseio.com/profiles");

    refProfile.update(profile, function(error) {
      if (error) {
        console.log('Synchronization failed');
        resolve(false); 
      } else {
        console.log('Synchronization succeeded');
        resolve(true); 
      }
    });
  })  
}

Güncellemek istediğim veritabanı tablosu ve profil:

Cevap #1

Profil için anahtarı bulmanız gerekiyor. Kullanıcı verilerini saklarken, .push() ile bir id yerine uid üzerinden anahtar kullanmalısınız.

Ayrıca, tamamlanma geri çağrısını kullanmayın; bunun yerine bir dinleyici kullanın.

Tamamlanmış bir geri arama, bir sunucu yanıtını bekler, oysa bir dinleyici önce yerel olarak tetiklenir. Yani bir dinleyici geri araması daha hızlıdır.

constructor() {
  this.profileRef = new Firebase("<my-firebase-app>/profiles");
  var currentUser = this.profileRef.getAuth(); // if authenticated 
  this.userRef = refProfile.child(currentUser.uid);
  userRef.on('value', (snap) => {
    console.log('Profile updated');
    console.log(snap.val()); // update profile info
  });
}

updateProfile(profile) {
  this.userRef.update(profile);
}