MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Mongoose - Không thể tạo nhiều hơn 4 trường bằng cách sử dụng `findOrCreate`

Tại sao bạn gặp sự cố:
Bạn không sử dụng findOrCreate phương pháp tốt. findOrCreate có thể có tối đa bốn đối số.
findOrCreate(conditions, doc, options, callback) :

  • conditions :Điều này được sử dụng để chỉ định bộ lọc lựa chọn để tìm tài liệu.
  • doc [tùy chọn]:Nếu tài liệu phù hợp với bộ lọc lựa chọn (conditions ) không được tìm thấy, doc này được hợp nhất với những gì bạn có trong conditions và sau đó được chèn vào DB.
  • options [tùy chọn]:Từ cơ sở mã plugin, tôi nghĩ rằng bạn có thể sử dụng options.upsert (nếu được đặt thành true ) để cập nhật tài liệu nếu nó đã tồn tại.
  • callback :Hàm thực thi sau khi thực hiện xong thao tác.

Điều bạn đang làm sai là mật mã { email: profile.emails[0].value } làm đối số thứ ba trong đó options dự kiến, bạn phải đưa nó vào doc tức là đối số thứ hai.

Cách khắc phục
Hãy thử điều này:

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. Làm cách nào để tôi up một tài liệu có điều kiện trong mongo?

  2. SailsJS:Nhận phản hồi của Ajax-Dạng SailsJS trong hàm đã gửi

  3. MongoDB có thể sử dụng một chỉ mục khi kiểm tra sự tồn tại của một trường có toán tử $ tồn tại không?

  4. Làm thế nào để xem những truy vấn nào đang sử dụng một chỉ mục trong MongoDB?

  5. Xung đột ReplicaSetId khi thêm nút MongoDB