Firebase : (поддерживает версию 1.0 или 2.0)
Если у кого-то еще есть проблемы изменение / настройка / обновление значений в его облачных функциях внутри триггера onUpdate или onWrite, тогда это может помочь вам ...
Сначала вот как мое дерево данных выглядит так:
"users" : {
"4h23u45h23509hu346034h5943h5" : {
"address" : "Backouse 2",
"city" : "Los Angeles",
"name" : "Joseph",
...
},
"23u4g24hg234h2ui342b34hi243n" : {
"address" : "Streetouse 13",
"city" : "Los Angeles",
"name" : "Stefan",
...
Теперь в облаке функционирует:
До (<= v0.9.1) </strong>
exports.updatingUser = functions.database.ref('/users/{pushId}')
.onUpdate(event => {
var address = event.data.child('address');
var city = event.data.child('city');
if (address.changed() || city.changed()) {
//generateThisname()
if (thisname == null) {
event.data.ref.child('name').set("error"); //Important Part
}
else {
event.data.ref.child('name').set(thisname); //Important Part
}
...
Сейчас (>= v1.0.0)
exports.updatingUser = functions.database.ref('/users/{pushId}')
.onUpdate((change, context) => {
var addressBefore = change.before.child('address').val();
var addressAfter = change.after.child('address').val();
var cityBefore = change.before.child('city').val();
var cityAfter = change.after.child('city').val();
//create reference from root to users/{pushId}/
var rootSnapshot = change.after.ref.parent.child(context.params.pushId)
if ((addressBefore !== addressAfter) || (cityBefore !== cityAfter)) {
//generateThisname()
if (thisname === null) {
rootSnapshot.child('name').set("error");
}
else {
rootSnapshot.child('name').set(thisname);
}
...
Итак, прежде чем вы сможете установить значение, вы должны сначала сделать ссылку из корня вашей базы данных, а затем пройти весь путь до значения и вызватьнабор ()