Обновление после того, как вы заметили, что DateChallengeAccept
не инициализируется при создании записи .Вы должны использовать другой метод, например onUpdate()
(или onWrite()
), а не onCreate()
, как вы делаете в своем вопросе.Выполните следующие действия:
exports.copyChallengeDate = functions.database.ref(`Users/{pushId}`).onUpdate((change, context) =>
const DateChallengeAccept = change.after.val().DateChallengeAccept;
if ( DateChallengeAccept === undefined) {
return false;
}
const referredBy = change.after.val().referredBy;
console.log('Challenge', context.params.pushId, DateChallengeAccept);
const dateChallengeAcceptObj = {
"DateChallengeAccept": DateChallengeAccept
};
let updates = {};
updates['Challenge/' + context.params.pushId + '/DateChallengeAccept'] = dateChallengeAcceptObj;
updates['Challenge/' + referredBy + '/DateChallengeAccept'] = dateChallengeAcceptObj;
return admin.database().ref().update(updates);
});
Вам необходимо получить значение referredId
в своей функции, поскольку именно этот элемент данных содержит идентификатор другого пользователя (то есть 7aH9Ag8414VzM0n7P6ur4LvcepI2).Таким образом, вы должны инициировать событие на родительском узле, а не на узле DateChallengeAccept
.
Затем вы должны использовать метод update()
для одновременной записи в два узла, см. Документ здесь: https://firebase.google.com/docs/database/web/read-and-write#update_specific_fields
Итак, вы должны сделать следующее:
exports.copyChallengeDate = functions.database.ref(`Users/{pushId}`).onCreate((snapshot, context)=>{
const DateChallengeAccept = snapshot.val().DateChallengeAccept;
if ( DateChallengeAccept === undefined) {
return false;
}
const referredBy = snapshot.val().referredBy;
console.log('Challenge', context.params.pushId, DateChallengeAccept);
const dateChallengeAcceptObj = {
"DateChallengeAccept": DateChallengeAccept
};
let updates = {};
updates['Challenge/' + context.params.pushId + '/DateChallengeAccept'] = dateChallengeAcceptObj;
updates['Challenge/' + referredBy + '/DateChallengeAccept'] = dateChallengeAcceptObj;
return admin.database().ref().update(updates);
});