Моя структура базы данных выглядит следующим образом.Я пытаюсь написать триггер Firebase, который при обновлении любой части узла / SCORES получит RoundScore для PlayerID и обновит существующую запись.
"SCORES" : {
"2017" : {
"Round_1" : {
"3" : {
"Emoji" : "",
"PlayerName" : "Person A",
"RoundScore" : 100
},
},
},
},
"SELECTIONS" : {
"2015" : {
"Round_1" : {
"TEAM A" : {
"18" : {
"emoji" : " ",
"playerName" : "Person A",
"position" : "POS"
},
"19" : {
"emoji" : " ",
"playerName" : "Person B",
"position" : "POS"
}
},
"TEAM B" : {
"54" : {
"emoji" : " ",
"playerName" : "Person C",
"position" : "POS"
},
"89" : {
"emoji" : " ",
"playerName" : "Person D",
"position" : "POS"
}
},
"TEAM C" : {
"227" : {
"emoji" : " ",
"playerName" : "Person E",
"position" : "POS"
},
"234" : {
"emoji" : " ",
"playerName" : "Person F",
"position" : "POS"
}
},
"TEAM D" : {
"239" : {
"emoji" : " ",
"playerName" : "Person G",
"position" : "POS"
},
"280" : {
"emoji" : " ",
"playerName" : "Person H",
"position" : "POS"
}
}
}
}
}
}
Итак, что я хочубаза данных, которая будет выглядеть после триггера.
"SCORES" : {
"2017" : {
"Round_1" : {
"3" : {
"Emoji" : "", <------------ DUPLICATE FROM HERE
"PlayerName" : "Person A",
"RoundScore" : 100 <------------ AND HERE
},
},
},
},
"SELECTIONS" : {
"2015" : {
"Round_1" : {
"TEAM A" : {
"3" : {
"emoji" : "", <------------ INSERT HERE
"playerName" : "Person A",
"position" : "POS"
"RoundScore" : 100 <------------ AND HERE
},
},
},
}
Пока что написанное мной работает только для жестко закодированного teamID (TEAM A в приведенном выше примере).
exports.whenScoresUpdate = functions.database
.ref('/SCORES/{yearId}/{roundId}/{playerId}')
.onCreate((snap, context) => {
const newScoreData = snap.val();
const yearId = context.params.yearId;
const roundId = context.params.roundId;
const playerId = context.params.playerId;
const scoreObj = {
"RoundScore" : newScoreData.RoundScore,
"Emoji" : newScoreData.Emoji,
};
return admin.database().ref('/SELECTIONS/' + yearId + '/' + roundId + '/{teamId}/' + playerId).update(scoreObj);