sql >> Database >  >> NoSQL >> MongoDB

Mongoose - Kan niet meer dan 4 velden maken met `findOrCreate`

Waarom je het probleem hebt:
U gebruikt de findOrCreate . niet methode goed. findOrCreate kan maximaal vier argumenten bevatten.
findOrCreate(conditions, doc, options, callback) :

  • conditions :Dit wordt gebruikt om het selectiefilter te specificeren om het document te vinden.
  • doc [optioneel]:Als een document overeenkomt met het selectiefilter (conditions ) niet gevonden, deze doc is samengevoegd met wat je hebt in conditions en vervolgens in de DB ingevoegd.
  • options [optioneel]:uit de codebase van de plug-in, dacht ik dat jeoptions.upsert . kunt gebruiken (indien ingesteld op true ) om het document bij te werken als het al bestaat.
  • callback :De functie die wordt uitgevoerd nadat de bewerking is uitgevoerd.

Wat je verkeerd doet, is wachtwoord { email: profile.emails[0].value } als het derde argument waarbij options wordt verwacht, moet u dit opnemen in het doc d.w.z. het tweede argument.

De oplossing
Probeer dit:

passport.use(
  new GoogleStrategy(
    {
      clientID: process.env.CLIENT_ID,
      clientSecret: process.env.CLIENT_SECRET,
      callbackURL: "http://localhost:3000/auth/google/dashboard",
      profileFields: ["id", "displayName", "photos", "email"]
    },
    function(accessToken, refreshToken, profile, cb) {
      console.log(profile);
      console.log(profile.photos[0].value);
      User.findOrCreate(
        { googleId: profile.id },
        // Notice that this function parameter below 
        // includes both the profilePic and email
        { profilePic: profile.photos[0].value, email: profile.emails[0].value },
        function(err, user) {
          return cb(err, user);
        }
      );
    }
  )
);



  1. Redis INCR gelijktijdigheid

  2. MongoDB-gegevensmodellering gebruiken om doorvoerbewerkingen te verbeteren

  3. beperken om dubbele waarden op te slaan in mongodb

  4. kan een mongoDb-container niet uitvoeren in docker voor Windows met behulp van het Linux-bestandssysteem