简体   繁体   中英

Data not updating in Firebase and Ionic

I am new to Ionic / Firebase and I try to update fields via a form. Everything works, no error, all console log show up what needed but the data are not being updated in the database.

Here is my controller :

 var database = firebase.database();
  var userId = firebase.auth().currentUser.uid;
  var nameInput = document.querySelector('#name');
  var descriptionInput = document.querySelector('#description');
  var saveButton = document.querySelector('#save');

  saveButton.addEventListener("click", function() {
    var name = nameInput.value;
    var description = descriptionInput.value;

    function writeUserData(name, description) {
      firebase.database().ref('accounts/' + userId).set({
        name: name,
        description: description,
      });
    }
    $state.go("tab.account");
  });

Any idea ? Or maybe a better method to simply update firebase's database via a form when the user is logged in ?

Seems you didn't really don't know the real significance/uses of function yet about when to use it

Well it's because you wrap it inside writeUserData and which is you didn't event execute/call this function

Also function writeUserData isn't necessary in this situation

so remove function it

var database = firebase.database();
var userId = firebase.auth().currentUser.uid;
var nameInput = document.querySelector('#name');
var descriptionInput = document.querySelector('#description');
var saveButton = document.querySelector('#save');

receiveNewData();

function receiveNewData() {
    // check if there's new data added
    firebase.database().ref('accounts/' + userId).on('child_added', function(msg) {
        var data = msg.val();
        // your new data
        console.log(data);
        $state.go("tab.account");
    });
}

saveButton.addEventListener("click", function() {
    var name = nameInput.value;
    var description = descriptionInput.value;

    firebase.database().ref('accounts/' + userId).set({
        name: name,
        description: description,
    });
});

You just transfer $state.go("tab.account"); to receiveNewData

To be able to catch the changes just call add child_added event listener inside 'accounts/' + userId

function receiveNewData() {
    firebase.database().ref('accounts/' + userId).on('child_added', function(msg) {
        var data = msg.val();
        // your new data
        console.log(data);
        $state.go("tab.account");
    });
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM