0
votes

Comment réparer 'Impossible de lire la propriété' Nom d'utilisateur 'de NULL'

Je veux appuyer sur le nouvel utilisateur au tableau des utilisateurs, mais cela me donne une erreur L'erreur est "Erreur TypeError: Impossible de lire la propriété 'Nom d'utilisateur' de NULL"

Je pense qu'il ne peut pas abonner aux nouvelles données ajoutées. Mais lorsque je rafraîchis mon navigateur, les données que j'ai entrées ont été enregistrées dans la base de données et apparaîtront dans la table.

Aidez-moi. Je suis nouveau à angular

Ceci est l'utilisateur de service.Service.ts xxx

ceci utilise les utilisateurs de composant.component.ts < Pré> xxx

Ceci est l'affichage users.component.html xxx


12 commentaires

Déboguer les données de retour. Quelque chose me dit que cela ne renvoie pas des données du tout. La création de nouvelles entités via un service de repos ne peut renvoyer qu'un en-tête pointant vers l'emplacement des nouvelles données.


Pouvez-vous vous connecter ce qui est retourné du serveur quand y ajoutez l'utilisateur?


Bonjour, si le rafraîchissement fonctionne, il semble que les utilisateurs deviennent d'accord, mais si après un poste vous obtenez l'erreur, il semble qu'un élément de votre tableau soit indéfini. Vous pouvez essayer d'ajouter à vos options HTTP Observer le corps , car je pense que la valeur par défaut est observer la réponse , qui contiendrait le code d'état, beaucoup d'autres choses et ne seraient pas déséréalisé à un objet utilisateur.


changer user.Asername à l'utilisateur? .AserName et assurez-vous que les données de retour de l'API


@ Joãoghignatti L'erreur est après la poste. Comment observer le corps?


@onik il retourne null


que c'est le problème que vous ajoutez une valeur nulle dans le tableau des utilisateurs, et lorsque vous la boucle, il est null non plus, renvoyez l'utilisateur nouvellement ajouté du serveur ou après que la réponse appelle simplement des gettuers ().


@Hiennguyen L'insert API que j'ai testé dans Postman. L'erreur est lorsque l'ajout de cela ne peut pas abonner. Les données push sont vides


@onik mais pourquoi cela enregistre dans la base de données les nouvelles données que j'ai entrées. Le problème est que les données de souscription sont NULL. S'il vous plaît aider. où est l'erreur. Son été 2 jours et je ne peux toujours pas le résoudre.


Pouvez-vous montrer la demande postale complète, y compris l'en-tête de réponse et le corps de réponse?


@Mathiasf usersComponent.html: 21 error TypeError: Impossible de lire la propriété 'Nom d'utilisateur' de NULL à Object.Eval [comme mise à jour de la mise à jour] (usercomponent.html: 21) sur objet.debugupdaterender [comme point de vue de la mise à jour] (Core.js: 23937) à CheckandupDateView (core.js: 23312) à CallViewaction (core.js: 23548) à ExeceMbeddedvisViewsaction (core.js: 23511) à CheckandupDateView (core.js: 23308) à CallViewAction (Core.Js: 23548) at Execcomponentviewsaction (core.js: 23490) à CheckandupDateView (Core.Js: 23313) à Callviewaction (Core.Js: 23548)


Je voulais dire le journal du trafic http (comme de Fiddler ou des outils F12)


3 Réponses :


0
votes

composant users.component.ts

Vous devez initialiser les utilisateurs de variable:

solution: xxx

pour xxx

pourquoi ?:

Lorsque vous utilisez: [] Vous n'indiquez que le type de données, mais ne pas l'initialisation


11 commentaires

@Jophil a mis une console.log de données à l'intérieur de cet abonnement.Userservice.AndUserer et dites-moi le résultat, s'il vous plaît


ça retourne null


adduser (nom d'utilisateur: chaîne, mot de passe: chaîne, type: chaîne): Observable {retour this.http.post (nom d'utilisateur, mot de passe, type}, httpoption) .Pipe (données => Données), appuyez sur (Data => Console.log ("Nouveau", Données)),); }


@Jophil Vérifiez votre réponse du serveur, vous appuyez sur NULL to Utilisateurs et lorsque vous essayez de lire le nom d'utilisateur de la propriété NULL, vous obtenez l'erreur.


usercontroller.insert_user = ((req, res, résultant suivant) => {let Userername = req.body.Asername; laissez mot de passe = req.body.cassword; laisser taper = req.body.type; bcrypt.hash (mot de passe, 10, (err, hachage) => {usermodel.insertuser ([nom d'utilisateur, hachage, type], (utilisateurs) => {res.send (utilisateurs);});});});});


Pouvez-vous s'il vous plaît vérifier, im aussi nouveau au noeud


usermodel.insertuser = ((nom d'utilisateur, mot de passe, type, résultat) => {db.Query ('insert dans les Tblusers set nom d'utilisateur =?, mot de passe =?, type =?', nom d'utilisateur, mot de passe, type, (err, res) => {résultat ("ajouté avec succès");});});


@JOPHIL utilisant des outils de développement de réseau de votre navigateur, vous obtenez l'utilisateur?


J'utilise Postman..Les données ont été ajoutées mais je n'ai pas de données JSON de réponse. Je pense que je l'obtiens. j'essaierai


@JOPHIL L'erreur est que, je ne peux pas vous aider beaucoup avec le nœud, apparemment votre code est correct


Merci Daniel. Je comprends maintenant ... l'erreur est dans mon serveur, je n'ai pas défini de données de réponse après la demande postale



0
votes

Je suggérerais d'exposer un observable pour les utilisateurs [] dans votre service et de la définir dans vos utilisateurs.component.ts. Ensuite, vous pouvez y souscrire dans votre composant.html avec le tuyau ASYNC.

Exemple court: xxx

Vous extraire des données de votre API et appelez .nsext () avec les données sur les utilisateurs $.

dans votre Utilisateurs.component.ts: xxx

puis en utilisant le tuyau ASYNC pour vous abonner à l'observable: xxx

J'espère que cela vous pousse dans la bonne direction.


2 commentaires

Mon code fonctionne avant mais maintenant je ne sais pas ce qui se passe. Pouvez-vous vérifier mon code où est-il mal tourné? Il ne peut pas souscrire, mais les données que j'ai entrées ont été enregistrées dans la base de données. Lorsque je rafraîchis mon navigateur, les nouvelles données ont été ajoutées dans le tableau. L'erreur est dans ceci.Users.push (données). Lorsque je connecte les données, il renvoie null. pourquoi il ne peut pas abonner


Je pense que Daniel dans la réponse ci-dessus a raison et le problème est dans votre code serveur car vous retournez NULL. Vous devriez déboguer votre code nœud et voir ce qui ne va pas exactement.



0
votes

Commencez par vérifier via Postman ou une autre plate-forme si votre point final fonctionne et renvoie l'objet utilisateur approprié.

sur votre service que vous avez xxx

où votre httpoptions est xxx

si vous entrez le code de http.post Vous remarquerez que les options param peuvent accepter une propriété appelé observer et vous aurez des cas où il est corps et des cas où il est réponse .

Observez: la réponse vous donnera quelque chose comme Entrez la description de l'image ici où le corps serait votre objet utilisateur, mais il serait venu avec le code de statut, les en-têtes, etc.
Donc, si vous vous abonnez à cet appel http, vous devez accéder à xxx

d'autre part, si vous modifiez vos options sur < Pré> xxx

et abonnez-vous à cet appel HTTP, votre DATA (INDIEME SUBSTONNE) serait le corps , donc, directement votre objet utilisateur. < / p>


0 commentaires