开发者问题收集

Firebase 和 Ionic 中的数据未更新

2017-02-15
299

我是 Ionic / Firebase 的新手,我尝试通过表单更新字段。一切正常,没有错误,所有控制台日志都显示所需内容,但数据库中的数据未更新。

这是我的控制器:

 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");
  });

有什么想法吗?或者也许更好的方法是在用户登录时通过表单简单地更新 firebase 的数据库?

1个回答

看来你还不知道这个函数的真正意义/用途,不知道什么时候使用它

嗯,这是因为你把它包装在 writeUserData 里面,而你没有执行/调用这个函数

同样,在这种情况下, writeUserData 函数也不是必需的

所以删除它

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,
    });
});

你只需要把 $state.go("tab.account"); 转移到 receiveNewData

已编辑

为了能够捕捉到更改,只需在 'accounts/' + userId 内调用添加 child_added 事件监听器

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");
    });
}
Beginner
2017-02-15