سلام من چند روزی هست که با این 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 ها صحبت می شد
سلام وقت بخیر اگر که امکانش هست کدتون رو بفرستین
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);
});
});
توی کد ها اروری که میده مربوط به findById هستش حالا بازهم به کد ها نگاه کنید
6.8.0 این ورژن از مانگوس رو نصب کنید شاید درست بشه
خیلی ممنون بابت راهنماییتون و اینکه من خودم یه راه حل پیدا کردم و به جای callback در اون قسمت آخر کد این کد رو نوشتم می خواستم نظر شمارم بپرسم
});passport.deserializeUser((id, done) => {
User.findById(id);
done(null, id);
});
سلام دوست من
خوب مثل اینکه دیگه از کال بک پشتیبانی نمیشه
کدی که نوشتی درست هست فقط خروجی رو به یک متغییر بده
const result = User.findByID......
console.log(result) // ببین محتواش چه چیزای هست
done()..