MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

नेवला - `findOrCreate` . का उपयोग करके 4 से अधिक फ़ील्ड बनाने में असमर्थ

आपको समस्या क्यों हो रही है:
आप findOrCreate . का उपयोग नहीं कर रहे हैं विधि अच्छी तरह से। findOrCreate अधिकतम चार तर्क ले सकते हैं।
findOrCreate(conditions, doc, options, callback) :

  • conditions :इसका उपयोग दस्तावेज़ को खोजने के लिए चयन-फ़िल्टर को निर्दिष्ट करने के लिए किया जाता है।
  • doc [वैकल्पिक]:यदि कोई दस्तावेज़ जो चयन-फ़िल्टर से मेल खाता है (conditions ) नहीं मिला, यह doc conditions में आपके पास जो कुछ है, उसके साथ विलय कर दिया गया है और फिर डीबी में डाला।
  • options [वैकल्पिक]:प्लगइन कोडबेस से, मुझे लगा कि आप उपयोग कर सकते हैंoptions.upsert (यदि true . पर सेट है ) दस्तावेज़ को अद्यतन करने के लिए यदि यह पहले से मौजूद है।
  • callback :ऑपरेशन के बाद निष्पादित कार्य किया जाता है।

आप जो गलत कर रहे हैं वह है पासाइन { email: profile.emails[0].value } तीसरे तर्क के रूप में जहां options अपेक्षित है, आप इसे doc . में शामिल करने वाले हैं यानी दूसरा तर्क।

समाधान
इसे आजमाएं:

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
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB स्पाइडरमोन्की UTF-8 को नहीं समझता है

  2. मोंगोडब से कनेक्ट नहीं हो सकता

  3. MongoDB हाथ से पहले सभी क्षेत्रों को जाने बिना सभी क्षेत्रों को एकत्रित करता है

  4. वस्तुओं की सरणी के साथ लुकअप

  5. सरणी का अंतिम तत्व प्राप्त करने के लिए $slice ऑपरेटर का उपयोग करना