Fonction De Classe Documentreference.set() est appelé avec des données non valides. Non pris en charge valeur de champ: une coutume Budget de l'objet
Code ci-dessous fonctionne très bien jusqu'à aujourd'hui. Mais je ne sais pas maintenant, il ne fonctionne pas et donne l'erreur ci-dessous.Pourriez-vous me dire pourquoi?
Erreur: Fonction De Classe Documentreference.set() est appelé avec des données non valides.
Non pris en charge valeur de champ: une coutume Budget de l'objet
export class Project {
id: string = null;
name: string;
budgetList?: Budget[];
}
export class Budget {
id: string;
amount: number;
contingency: number = 20;
budgetGroup: BudgetGroup = new BudgetGroup();
creationTime: string;
}
code:
async create(data: DtoProject): Promise<Project> {
try {
const projectId: string = this.fireStore.createId();
const budgets = this.budgetProvider.createBudgets(data.budgetList, projectId);//budgets
const proj: Project = {
id: data.id,
name: data.name,
budgetList: budgets,//here it has the error
}
proj.id = projectId;
await this.fireStore.doc<Project>(`projects/${projectId}/`).set(proj));//project
}
}
createBudgets(data: Budget[], projectId: string): Budget[] {
let budgets: Budget[] = [];
forEach(data, (d) => {
const budgetId: string = this.fireStore.createId();
d.id = budgetId;
budgets.push(d);
this.fireStore.doc<Budget>(`projects/${projectId}/budgets/${budgetId}`).set({
id: budgetId,
amount: d.amount,
contingency: d.contingency,
budgetGroup: d.budgetGroup,
creationTime: moment().format()
})
})
return budgets;
}
Je suis tombé sur cette erreur lors du passage dans un objet json où certaines valeurs de champ de façon inattendue null
OriginalL'auteur Sampath | 2018-01-08
Vous devez vous connecter pour publier un commentaire.
Vous avez à transformer votre tableau de budgets dans un tableau de JavaScript et des objets.
Première étape:
Deuxième étape:
Alors vous êtes bon pour aller.
Par le chemin, lors de l'élaboration d'un langage qui se compile en JavaScript, vous ne pouvez pas utiliser d'Objets personnalisés. Au lieu de cela, vous devez utiliser JavaScript et des objets à enregistrer dans le Firestore Base de données.
Par exemple, disons que vous avez cette classe ci-dessous:
Et vous essayez d'exécuter le code suivant:
Vous obtenez un message d'erreur comme:
Maintenant, si vous essayez d'exécuter cette ligne de code:
Vous verrez que votre objet a été enregistré dans la base de données. Fondamentalement
Object.assign
fait la même chose que:Si faire usage de
Object.assign
, il vous permettra d'économiser beaucoup de temps.Mise à JOUR
Comme je l'ai souligné dans un commentaire ci-dessous, vous pouvez trouver la documentation dit à propos de objets Personnalisés ici. Comme vous pouvez le voir, il y a un avertissement en disant:
Ci-dessous il y a une capture d'écran de ce que dit la documentation.
export class Project { memberList?: Member[]; }
C'est dur à dire car je ne vois pas le reste de votre code. Mais je vous conseille fortement de toujours convertir vos objets de JavaScript et des objets.
Vous êtes les bienvenus. Je suis content d'avoir pu vous aider. 🙂 Vous pouvez vérifier ce que dit la documentation sur les Objets Personnalisés. Ici c'est le lien: firebase.google.com/docs/firestore/manage-data/add-data Comme vous pouvez le voir il y a un avertissement du genre: “ Web utilise des objets JavaScript”. Par conséquent, faire usage de l'Objet.attribuer.
Vous avez sauvé ma journée ami! Parfait 🙂
Merci pour le
User
exemple etObject.assign
!OriginalL'auteur Mateus Forgiarini da Silva
Vous pouvez stringify l'objet et de l'analyser pour objet de supprimer les noms de classe de l'objet.
OriginalL'auteur MalindaK
Erreur est simplement indiquer que les données d'entrée n'est pas valide!
J'ai aussi rencontré l'erreur de nulle part, qui était parce que j'ai enlevé le champ de saisie de l'interface qui a été censé pour obtenir la valeur et de la télécharger dans le document de quelques collecte des!
remarque: vérifiez votre code .fichier ts
firebase.firestore().collection("some_name").add() /set()
si certains inutiles champ est là ou pas.OriginalL'auteur Vaibhav Dewangan