• 1402/06/20

درباره Model.findById() no longer accepts a callback :

سلام من چند روزی هست که با این error مواجه شدم و هر چقدر هم که سرچ کردم جوابی پیدا نکردم : MongooseError: Model.findById() no longer accepts a callback
    at Function.findById (C:\Users\lenovo\Desktop\weblog\node_modules\mongoose\lib\model.js:2126:11)
    at C:\Users\lenovo\Desktop\weblog\config\passport.js:31:10
    at pass (C:\Users\lenovo\Desktop\weblog\node_modules\passport\lib\authenticator.js:354:9)
    at Authenticator.deserializeUser (C:\Users\lenovo\Desktop\weblog\node_modules\passport\lib\authenticator.js:359:5)
    at SessionStrategy.authenticate (C:\Users\lenovo\Desktop\weblog\node_modules\passport\lib\strategies\session.js:61:10)
    at attempt (C:\Users\lenovo\Desktop\weblog\node_modules\passport\lib\middleware\authenticate.js:369:16)
    at authenticate (C:\Users\lenovo\Desktop\weblog\node_modules\passport\lib\middleware\authenticate.js:370:7)
    at Layer.handle [as handle_request] (C:\Users\lenovo\Desktop\weblog\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (C:\Users\lenovo\Desktop\weblog\node_modules\express\lib\router\index.js:328:13)
    at C:\Users\lenovo\Desktop\weblog\node_modules\express\lib\router\index.js:286:9 

انگار این ارور وقتی از انواع find استفاده میشه به وجود میاد ممنون می شم کمکی بکنید و این سوال برام وقتی پیش اومد که قسمت 76 درمورد passport ها صحبت می شد

  • 1402/06/20
  • ساعت 12:42

سلام وقت بخیر اگر که امکانش هست کدتون رو بفرستین


  • 1402/06/21
  • ساعت 00:03
const passport = require('passport');
const { Strategy } = require('passport-local');
const bcrypt = require('bcryptjs');

const User = require('../models/User');
passport.use(new Strategy({ usernameField: "email" }, async (email, password, done) => {
    try {
        const user = await User.findOne({ email });
        if (!user) {
            return done(null, false, { message: "کاربری با این ایمیل ثبت نشده" });
        }

        const isMatch = await bcrypt.compare(password, user.password);
        if (isMatch) {
            return done(null, user);
        } else {
            return done(null, false, { message: "نام کار بری یا کلمه عبور صحیح نمی باشد" });
        }
    } catch (err) {
        console.log(err);
    }

}));

passport.serializeUser((user, done) => {
    done(null, user);
});

passport.deserializeUser((id, done) => {
    User.findById(id, (err, user) => {
        done(err, user);
    });
});

  • 1402/06/21
  • ساعت 00:06

توی کد ها اروری که میده مربوط به findById هستش حالا بازهم به کد ها نگاه کنید


  • 1402/06/21
  • ساعت 15:36

6.8.0 این ورژن از مانگوس رو نصب کنید شاید درست بشه 


  • 1402/06/21
  • ساعت 20:00

خیلی ممنون بابت راهنماییتون و اینکه من خودم یه راه حل پیدا کردم و به جای callback در اون قسمت آخر کد این کد رو نوشتم می خواستم نظر شمارم بپرسم

 

});passport.deserializeUser((id, done) => {
    User.findById(id);
    done(null, id);
});

  • 1402/06/26
  • ساعت 13:56

سلام دوست من

خوب مثل اینکه دیگه از کال بک پشتیبانی نمیشه

کدی که نوشتی درست هست فقط خروجی رو به یک متغییر بده

const result = User.findByID......
console.log(result) // ببین محتواش چه چیزای هست
done()..

logo-enamadlogo-samandehi