使用Firebase,如何将创建的密钥传递给另一个函数?

时间:2017-09-22 21:57:32

标签: javascript firebase firebase-realtime-database

我正在创建一个多用户应用,并希望使用密钥来生成用户信息。我创建了一个函数,用生成的密钥更新数据库的子节点。以下函数表现正确:

unlist(list) {

    var postData = {
      state: "unlisted",
    };

    var newPostKey = firebase.database().ref().child('foods').push().key;

    var updates = {};
    updates['foods' + '/' + list.$key + '/' + 'state' + '/' + newPostKey] = postData;

    return firebase.database().ref().update(updates);}

我有一个与此类似的单独功能:

changestate(item) {

    var postData = {
      state: "listed",
    };

    var newPostKey = firebase.database().ref().child('foods').push().key;

    var updates = {};
    updates['foods' + '/' + item.$key + '/' + 'state' + '/' + newPostKey] = postData;

    return firebase.database().ref().update(updates);}

为了使此工作正常,从unlist(list)创建的密钥需要与var newPostKey中的changestate(item)对应,反之亦然。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

cfoster5。我从你的问题中理解的是,unlist函数中的newPostkey应该被传递给changeState(item)函数,如果这是你想要的意味着你可以通过在

中调用promise来做到这一点。
firebase.database().ref().update(updates).then(function(){
   // You can call changestate function and pass the function  like below
  _changestate(item,newPostkey); 
});

并在您的更改状态函数中

changestate=function(item,passedkey){
  var newPostKey = passedkey;
}

查看我的jsfiddle sample