簡體   English   中英

按下React本機按鈕可執行3個Firebase數據庫更新中的2個

[英]React-native button press performs 2 out of 3 Firebase database updates

當按下此按鈕時,它需要運行三個數據庫更新。 到目前為止,它會執行其中兩個更新。 這就是它產生的(黑色),也是我要達到的(藍色)。 請說明如何使所有三個更新正常工作。 我認為,也許最后一個包含return語句的更新正在失敗的更新之前運行,並且return語句結束了整個功能。

結果

<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

使用嵌套推送,然后保證嵌套一個更新。

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

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

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

         });

     });

});

這只是愚蠢的,但是我打電話給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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM