Реактивное нажатие кнопки выполняет 2 из 3 обновлений базы данных Firebase - PullRequest
0 голосов
/ 08 июня 2018

Когда эта кнопка нажата, необходимо запустить три обновления базы данных.Пока он делает два из этих обновлений.Это то, что он производит (черным цветом) и чего я пытаюсь достичь (синим цветом).Пожалуйста, покажите, как заставить работать все три обновления.Я думаю, что, возможно, последнее обновление, в котором есть оператор return, выполняется до неудачного обновления, и оператор return завершает всю функцию.

results

<Button
        title='Up'
        color='green'
        onPress={() => recordUpVote(this.state.currentUser, 'AMZN')}
      />

function recordUpVote(user, instr){
  var today = moment().format('MMDDYYYY');

firebase.database().ref('/votes/' +today+ '/' +instr+ '/voters').push({
  user: user.id  // THIS IS NOT EXECUTING... or is being overwritten..?
    }).then(()=>{
     firebase.database().ref('/users/'+user.uid+ '/votes/' + today+ '/').push({
       instrument: instr,
       vote: 'up'
 }).then(()=>{
       firebase.database().ref('/votes/' +today+ '/' +instr+ '/upVotes').transaction(function(upVotes) {
         return upVotes + 1
       });
     });
});

} // end recordUpVote

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Это просто глупо, но я звонил user.id вместо user.uid.

function recordUpVote(user, instr){
  var today = moment().format('MMDDYYYY');
  firebase.database().ref('/votes/' +today+ '/' +instr+ '/voters/').push({
    voters: user.uid
      }).then(()=>{
       firebase.database().ref('/users/'+user.uid+ '/votes/' + today+ '/').push({
         instrument: instr,
         vote: 'up'
       }).then(()=>{
         firebase.database().ref('/votes/' +today+ '/' +instr+ '/upVotes').transaction(function(upVotes) {
           return upVotes + 1
         });
       });
  });
} // end recordUpVote
0 голосов
/ 08 июня 2018

Используйте Nested push с последующим обещанием вкладывать одно обновление за другим.

firebase.database().ref('.....').push().then(()=>{

     firebase.database().ref('.....').push().then(()=>{

        firebase.database().ref('.....').push().then(()=>{

         });

     });

});
...