MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mongoose - Tidak dapat membuat lebih dari 4 bidang menggunakan `findOrCreate`

Mengapa Anda mengalami masalah:
Anda tidak menggunakan findOrCreate metode dengan baik. findOrCreate dapat mengambil hingga empat argumen.
findOrCreate(conditions, doc, options, callback) :

  • conditions :Ini digunakan untuk menentukan filter-pilihan untuk menemukan dokumen.
  • doc [opsional]:Jika dokumen yang cocok dengan filter pilihan(conditions ) tidak ditemukan, doc . ini digabungkan dengan apa yang Anda miliki di conditions dan kemudian dimasukkan ke dalam DB.
  • options [opsional]:Dari basis kode plugin, saya pikir Anda dapat menggunakanoptions.upsert (jika disetel ke true ) untuk memperbarui dokumen jika sudah ada.
  • callback :Fungsi yang dijalankan setelah operasi selesai.

Apa yang Anda lakukan salah adalah passign { email: profile.emails[0].value } sebagai argumen ketiga di mana options diharapkan, Anda harus memasukkannya ke dalam doc yaitu argumen kedua.

Perbaikan
Coba ini:

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. Perbarui koleksi MongoDB menggunakan $toLower

  2. Pengujian unit dengan MongoDB

  3. Tutorial MongoDB:Menghubungkan ke MongoDB di Scala

  4. Kerangka Agregasi MongoDB - Bagaimana Cara Mencocokkan Berdasarkan Rentang Tanggal, Kelompokkan Berdasarkan Hari, dan Rata-Rata Pengembalian Untuk Setiap Hari?

  5. Data pegas MongoDb:MappingMongoConverter menghapus _class