1
votes

Comment corriger la réponse [objet objet] de l'autorisation qui devrait afficher les données?

Mon problème est que j'obtiens une réponse vide [objet objet] lors de la récupération des données. Le response.json () est [object Object] le même pour juste la réponse, mais avec response.text () j'obtiens les données req.user dans le texte de la route protégée (passeport.authenticate). L'autorisation se passe bien, elle trouve l'utilisateur, je n'obtiens pas 'Unauthorized' et dans ma route secrète j'obtiens l'objet utilisateur par req.user. J'ai seulement du mal à récupérer cet utilisateur afin que je puisse obtenir ces valeurs utilisateur séparément, comme vous pouvez le faire lorsqu'il s'agit de JSON. Normalement, response.json fait le travail pour moi, mais pas ici. Est-ce que je manque quelque chose?

J'ai essayé d'analyser des données, de stringifier des données, mais cela ne semble pas résoudre le problème. Je pense qu'il me manque quelque chose, mais je ne le vois tout simplement pas.

app.get('/profile', passport.authenticate('jwt', { session: false }),
    function(req, res) {
        res.status(200).send(req.user);
    }
);

{...}
const getToken = await AsyncStorage.getItem('jwt');
                const response = await fetch('http://ip:3000/profile', {
                    method: 'GET',
                    headers: {
                        Accept: 'application/json',
                        Authorization: `Bearer ${getToken}`
                    }
                });
                const data = await response;
                console.log('Response: ' + data);
{...}

Les résultats attendus sont pour la réponse dans la récupération à montrer à l'utilisateur, ou essentiellement. json montre l'utilisateur. Mais au lieu de montrer à l'utilisateur, il donne [objet Object].


0 commentaires

3 Réponses :


1
votes

Vous devez JSON.stringify la réponse

console.log('Response: ' + JSON.stringify(data));


1 commentaires

Honnêtement, j'ai essayé ceci, mais je suppose que j'ai raté quelque chose en essayant ceci. J'ai donc stringifyd data, créé response.json () et je peux accéder aux données utilisateur! Merci pour votre réponse, cela m'amène plus loin :)



0
votes

Plus simple, passez les données comme deuxième paramètre.

console.log('Response: ', data);


1 commentaires

Peut-être plus simple, mais c'est vraiment une préférence, n'est-ce pas? Je préfère le faire avec + pour que je puisse voir dans le code d'accord cela appartient à ceci et qu'il n'est pas séparé.



1
votes

La sortie objet-objet survient lorsque la sortie n'est pas analysée ou si elle est imbriquée à l'intérieur de sorte que l'analyseur ne peut pas lire cela.

Pour résoudre ce problème, vous devez convertir la sortie en chaîne et ensuite les afficher.

Il y a probablement deux façons:

1. console.log ('données', JSON.Stringify (données));

2. console.log ('data', data.toString ())


0 commentaires