IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

Exécution d'une fonction en utilisant EJS


Sujet :

NodeJS

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Par défaut Exécution d'une fonction en utilisant EJS
    Bonjour,

    Je m'adresse à vous car j'ai rencontré un problème et malgré avoir tout essayé je n'ai pas réussi à le résoudre.

    Voilà le contexte :
    J'ai créé une fonction tscrap qui prend comme paramètre un nom d'utilisateur twitter et me permet à partir de ce dernier d'extraire quelques informations sur le compte que je stocke dans une base de donnée mongoDB.

    La fonction marche nickel après test et j'ai voulu l'implémenter dans un site web qui contient un formulaire username twitter qui me renvoie donc le nom d'utilisateur que je fais rentrer dans la fonction et je fais une recherche mongoDB pour extraire les données que la fonction a stockée pour les utilisées dans un nouveau code html (en .ejs).

    Seul problème j'ai l'impression que ma fonction ne s'exécute pas et je reçois un message d'erreur à chaque fois que j'envoie le formulaire, cependant si je lance ma fonction de façon externe cela marche sans problème j'arrive à accéder aux données.

    J'ai fait plusieurs requêtes mongoDB et je me rend compte que la fonction n'est pas lancée ce que je ne comprend pas.

    Voila la partie du code qui me pose un problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
    app.post('/ajouter/', urlencodedParser, function (req, res) {
     
                tscrap.tscrap(req.body.twitterinfo)
     
                User.find({
                    username: req.body.twitterinfo
                }, function (err, clients) {
     
     
                        res.render('show.ejs', {
                            nom: clients[0].nom,
                            username: clients[0].username,
                            urlImage: clients[0].urlImage,
                            nbFollowi: clients[0].nbFollowi,
                            dateCreation: clients[0].dateCreation,
                            nombreF: clients[0].nombreF
                        })     
     
     
                })
     
                });
    Si je ne déclare pas User c'est que j'ai créé un fichier model.js qui le définit déjà que j'ai inséré dans mon fichier index.js.

    Je reçois le message d'erreur suivant :

    nom: clients[0].nom,
    ^
    TypeError: Cannot read property 'nom' of undefined
    Et voila aussi le formulaire en html que j'utilise :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            <form action="/ajouter/" method="post">
                <p>
     
                    <label for="twitterinfo"> Entrez votre username twitter</label>
                    <input type="text" name="twitterinfo" id="twitterinfo" autofocus />
     
     
                    <input type="submit" />
                </p>
            </form>


    En espérant que quelqu'un trouvera une solution, je vous remercie par avance de votre attention.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    Salut

    Ton problème vient de requête dans mongodb, qui devrais être comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    User.find({username: req.body.twitterinfo}).toArray(function (err, clients) {
    ou mieux, comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    User.findOne({ username: req.body.twitterinfo }, function (err, clients) {
    soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    User.findOne({ username: req.body.twitterinfo }, function (err, client) {
                        res.render('show', {
                            nom: client.nom,
                            username: client.username,
                            urlImage: client.urlImage,
                            nbFollowi: client.nbFollowi,
                            dateCreation: client.dateCreation,
                            nombreF: client.nombreF
                        });
                });
    tu peux même te simplifier la vie en envoyant directement ton objet à ton template

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    User.findOne({ username: req.body.twitterinfo }, function (err, client) {
                        res.render('show', {
                            client: client
                        }); 
                });
    que tu utilise ainsi:

    et accessoirement, ajouter la gestion des erreurs

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Par défaut
    Merci beaucoup de votre réponse

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    154
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Avril 2009
    Messages : 154
    Par défaut
    de rien, tu peux mettre le sujet en

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 28/04/2006, 16h36
  2. Stopper l'exécution d'une fonction au bout d'un certain temp
    Par Eagle959 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/03/2006, 18h16
  3. Réponses: 3
    Dernier message: 11/03/2006, 15h35
  4. Pause dans l'exécution d'une fonction
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/06/2005, 07h48
  5. Exécution d'une fonction...
    Par mickeliette dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/11/2004, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo