سلام
اقا ما هر وقت میایم یه امکان جدید توی nodejs اضافه کنیم و تست کنیم به دیوار می خورم و چند روز الکی دور خودم میچرخم :((
یه متد داخل یه کنترلر ساختم که کاربر وقتی فرم عضویت رو پر می کنه . هلش میدم سمت این متد .
اما توی کنسول که خطا رو چاپ کردم متن زیر رو نوشت :
ReferenceError: next is not defined
at verifyRecaptcha.then.data (/home/workspace/nodejs/meetNodeJS/v1.2/app/http/controller/authController.js:43:30)
at process._tickCallback (internal/process/next_tick.js:68:7)
متد عضویت :
async register(req, res) {
await this.verifyRecaptcha(req, res)
.then(data => {
const validationresult = validationResult(req);
if (!validationresult.isEmpty()) {
let validationErros = validationresult.array();
let erros = [];
validationErros.forEach(item => {
erros.push(item.msg)
})
req.flash("errors", erros);
return res.redirect('/auth/register');
}
passport.authenticate('local.register', {
successRedirect: '/auth/login',
failureRedirect: '/auth/register',
failureFlash: true,
})(req, res, next)
})
.catch(err => {
console.log(err);
req.flash('errors', [err])
return res.redirect('/auth/register')
});
}
محتویات متد verifyRecaptcha هست (این برای گوگل ریکپچا هست ) :
verifyRecaptcha(req, res) {
return new Promise((resolve, reject) => {
this.recaptcha.verify(req, (err) => {
if (err) {
reject('Security verification not performed correctly');
} else {
resolve(true);
}
})
})
}
استراتژی local.register هم هست :
passport.use('local.register', new localStrategy(
{
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true,
}, async (req, email, password, done) => {
let findUser = await User.findOne({ email: email });
if (findUser) return done(null, false, req.flash('erros', ['This email has already been used by another user']))
const newUser = new User({
email: req.body.email,
password: req.body.password,
});
await newUser.save(err => {
return done('error', false, req.flash('errors', [err]))
});
return done(null, newUser, req.flash('success', ["Your Account Successfuly Created!"]))
}
))
اما درست کار نمی کنه :((
ممنونم اقا سبحان. درست شد
یه توضیح در حد یه دیپلمه میدی بهم که چرا اصلا باید اضافه کنم؟
یه جور که منه کمم سواد بفهمم
چیز خاصی نبود در express به یک controller سه پارامتر به نام های req res next پاس داده می شود. که شما مقدار next رو نگرفته بودید.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟