0
votes

Configuration de l'authentification Facebook avec MongoDB Atlas et Passport.js

J'ai fait beaucoup de recherches pour trouver cette réponse à mon problème, mais je n'ai rien découvert. N'hésitez pas à attacher un lien si j'ai raté la réponse.

J'ai trouvé cette solution, mais je ne sais pas exactement comment cela pourrait s'appliquer à cette situation: E11000 Duplicate Key Error Index à MongoDB Mongoose P>

J'essaie de connecter mon express.js, Mongodb, passeport.js application à Mongo-Atlas. J'ai mon cluster d'Atlas configuré et accepte de nouveaux utilisateurs de mon localhost et à l'aide de Google Oautht 2.0, cependant, lorsque j'essaie de vous inscrire ou de vous connecter à l'aide de Facebook, je reçois l'erreur suivante. P>

[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "userDB.users"
    },
    {
        "v" : 2,
        "key" : {
            "email" : 1
        },
        "name" : "email_1",
        "ns" : "userDB.users",
        "background" : true
    },
    {
        "v" : 2,
        "unique" : true,
        "key" : {
            "username" : 1
        },
        "name" : "username_1",
        "ns" : "userDB.users",
        "background" : true
    }
]


2 commentaires

La seule chose que je pouvais trouver pour résoudre le problème était de définir le nom d'utilisateur sur "None" lors de la création d'un utilisateur avec Facebook. Cela ne semble pas comme la meilleure solution. J'aimerais toujours savoir s'il y a une meilleure option.


Donc Nom d'utilisateur: "Aucun" n'a rien résolu. Je suis maintenant à perte! :(


3 Réponses :


0
votes

Vous avez un indice unique défini sur le nom d'utilisateur, mais votre code n'insère pas un nom d'utilisateur (potentiellement parce que le nom d'utilisateur ne reçoit pas de récupération du fournisseur d'authentification comme vous vous attendez). Cela provoque plusieurs documents avec la même valeur dans le nom d'utilisateur déposé (NULL).

Si vos utilisateurs sont censés avoir un nom d'utilisateur, vous devez déboguer votre code pour déterminer pourquoi il ne récupère pas le nom d'utilisateur ou le transmettre à MongoDB. Si le nom d'utilisateur est facultatif, supprimez l'index unique sur celui-ci.


2 commentaires

Donc, je ne comprends pas pourquoi définir mon schéma Email exigence à FALSE, ne fonctionne pas. Y a-t-il quelque part ailleurs que je dois vérifier un champ requis? Non plus la définition du champ unique en faux. Qu'est-ce que je rate?


Tous les logiciels qui créent des index ne supprimeront pas automatiquement des index qui ne sont pas explicitement mentionnés, mais existent dans la base de données. Pour supprimer un index, vous pouvez utiliser un logiciel d'administration de base de données comme Mongodb Compass.



0
votes

 Aperçu de l'Atlas >> Collections >> {Nom de la collection} >> Index >> Drop Index

Il a finalement cliqué! Je suis allé dans l'onglet Index sur Atlas et j'ai supprimé l'index nom d'utilisateur requis. Merci pour votre aide @Oneg pour une raison quelconque, je n'ai pas pu trouver cette explication en ligne!

Mise à jour

SO SE Suppression de l'index de Mongo-Atlas ne résout que temporairement le problème. Je pense que je suis insisté sur la façon de déposer l'index de mon code, mais je suis déjà déposé de la coquille de Mongo, ce qui semblait résoudre le problème aussi. Je vais donc fournir les deux commandes: xxx

dans la coque de Mongo, entrez dans votre dB et exécutez cette commande: xxx

Pour confirmer, exécuter: xxx

tant d'heures de recherche essayant de résoudre ce problème! Â J'espère que cela vous aide à vous aider!


1 commentaires

La suppression manuelle que la suppression manuelle ne résout que le problème jusqu'à ce que j'exécute à nouveau l'application. J'ajoute une mise à jour à ma question parce que la documentation que j'ai trouvée sur les indices de chute ne m'aidez pas.



0
votes

Allez à votre cluster Atlas puis ouvrez les collections, puis ouvrez les index

puis supprimer manuellement l'indice d'utilisateur_1.


0 commentaires