2015-07-15 14 views
7

Mam rekord Firebase "wyszukiwania: 0" dla każdego użytkownika. W niektórych przypadkach chciałbym dodać 1 do aktualnego wyniku. Dotarłem aż tak daleko, ale z jakiegoś powodu to nie działa:Jak zwiększyć rekord w Firebase?

du.fbAddSearchCount = function() { 
    var usr = new Firebase(firebase_url + "https://stackoverflow.com/users/" + user_uid); 

    usr.on("value", function(snapshot) { 
     user = snapshot.val(); 

     var usersRef = ref.child("users"); 

     var fbUser = usersRef.child(user_uid); 
     fbUser.update({ 
      searches: user.searches + 1 
     }); 
    } 
} 

Każda pomoc, aby to zadziałało?

Dziękuję.

+0

co user.searches? – Chrillewoodz

+0

To będzie wartość, która znajduje się obecnie w rekordzie "wyszukiwania" użytkownika w bazie ogniowej. Na przykład, jeśli jest 5, chciałbym, aby ten skrypt zaktualizował to, aby przeczytać 6. – user1661677

+1

Co więc nie działa? Muszę podać więcej szczegółów. Czy w ogóle aktualizuje rekord, ale nie pod nowym numerem? – Chrillewoodz

Odpowiedz

14

Można użyć transakcja

var databaseRef = firebase.database().ref('users').child(user_uid).child('searches'); 

databaseRef.transaction(function(searches) { 
    if (searches) { 
    searches = searches + 1; 
    } 
    return searches; 
}); 
+15

Twój kod nie zadziała, gdy 'searches = 0'. Zamiast tego możesz to zrobić: 'return (search || 0) + 1;' –

0
ref.transection(function(queue_length) { 
    if(queue_length|| (queue_length === 0)) 
    { 
     queue_length++; 
    } 
    return queue_length; 

}) 

Można użyć takiego;)

+1

podaj wyjaśnienie swojej odpowiedzi –

+0

plus kod, który kompiluje i nie ma literówki! – ubienewbie