[英]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.