אנגולר - Firebase - איך אני יכול לעדכן אובייקט בבסיס הנתונים בזמן אמת של Firebase
איך לעדכן אובייקט קיים.
אני מתקשה לעדכן אובייקט בבסיס הנתונים בזמן אמת של Firebase.
מישהו יודע איך לעשות את זה?
אני משתמש ב-Angular וב-TypeScript.
הנה קוד TypeScript הנוכחי שלי:
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);
}
});
})
}
תשובה #1
אתה צריך למצוא את המפתח עבור הפרופיל. כאשר מאחסנים נתוני משתמש, עליך להשתמש ב-uid כמפתח ולא ב-id עם .push().
בנוסף, אל תשתמש ב-callback של השלמת הפעולה, השתמש במאזין במקום.
קריאת חזרה שהושלמה מחכה לתשובת שרת, כאשר מאזין מופעל מקומית תחילה. לכן קריאת חזרה של מאזין היא מהירה יותר.
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);
}
