Dalla nota Firebase:Aggiornamento oggetti nidificati Firebase
Dato un unico percorso chiave come alanisawesome
, updateChildren()
solo aggiorna i dati al primo livello del bambino, e tutti i dati passati in oltre il primo livello di bambino è un trattato come un setValue()
operazione. Il comportamento a percorsi multipli consente di utilizzare percorsi più lunghi (come alanisawesome/nickname
) senza sovrascrivere i dati. Questo è il motivo per cui il primo esempio differisce dal secondo esempio.
Sto cercando di utilizzare una singola funzione createOrUpdateData(object)
nel mio codice. In caso di aggiornamento, aggiorna correttamente i bambini di primo livello, ma se ho passato un oggetto nidificato, cancella tutte le altre proprietà di quell'oggetto nidificato.
Ecco il codice:
function saveUserDetails(email,object){
var hashedEmail = Utilities.getHashCode(email);
var userRef = ref.child(hashedEmail);
return $q(function(resolve,reject){
return userRef.update(object, function(error){
if(error){
reject(error);
}else{
resolve("Updated successfully!");
}
});
});
}
Quindi, se mi passa:
{
name: 'Rohan Dalvi',
externalLinks: {
website: 'mywebsite'
}
}
allora sarà eliminare le altre proprietà all'interno dell'oggetto externalLinks. C'è un modo più semplice e pulito per evitare questo?
In breve, come faccio a verificare che gli oggetti nidificati vengano aggiornati e che i dati non vengano cancellati.
La mia risposta è stata di aiuto? –
Ciao @DavidEast, grazie funziona! Anche se non ho provato ad aggiornare una matrice all'interno di un oggetto nidificato. –