J'ai fait quelques tests avec firebase et vu la différence dans la validation des règles entre onDisconnect().update()
et simple update()
en utilisant newData.parent()
dans les règles.Pourquoi les règles de validation se comportent-elles différemment (uniquement) avec la mise à jour onDisconnect?
Lorsque j'utilise update()
cela fonctionne. Mais avec onDisonnect().update()
j'ai PERMISSION_DENIED!
règles de base de données:
{
"rules": {
"$id": {
".read": true,
".write": true,
"a": { ".validate": true },
"b": { ".validate": "newData.parent().child('a').val() == 'a'" },
}
}
}
Javascript:
const valid = {
a: 'a',
b: 'b'
};
function update(obj) {
console.log('update', obj);
return ref.update(obj);
}
function onDisconnectUpdate(obj) {
console.log('onDisconnectUpdate', obj);
return ref.onDisconnect().update(obj);
}
update(valid);
onDisconnectUpdate(valid);
J'espère que vous pouvez me aider.
Bonne question Douglaz. Il a fallu du temps pour déterrer la réponse (malheureuse) que j'ai posté ci-dessous. –