sariapro
3 سال پیش توسط sariapro مطرح شد
2 پاسخ

مشکل در اعتبارسنجی فرم در NodeJS

سلام. تازه کار در NodeJS هستم و هر روز با مشکلات جدیدتری روبه رو میشم که با کمک شما دارم میرم جلو

کلیت مشکل من :
یه فرم عضویت ساختم و یه گوگل ریکپچا انداختم داخلش
این روتر مربوط میشه به زمانی که فرم داره ارسال میشه

router.post('/register',registerValidator.handel(),AuthController.registerProcess)

محتویات متد هندل فایل registerValidator هست:

    handel(req,res){
        return [
            check('name').isLength({min : 5}).withMessage("The name must be at least 5 characters long"),
            check('email').isEmail().withMessage("The Entered Email Is Invalid "),
            check('password').isLength({min:6}).withMessage("The password must be at least 6 characters long")
        ];
    }

محتویات متد registerProcess هم هست:

registerProcess(req, res) {

        this.validationRecaptch(req, res)
            .then(result => validationResult(req))
            .then(result => {
                if (!result.isEmpty()) {
                    let messages = [];
                    let erros = result.array();
                    erros.map(item => {
                        messages.push(item.msg);
                    })
                    req.flash('errors', messages);
                    res.redirect('/auth/register');
                }
            })
            .catch((err) => {
                req.flash('errors', [err]);
                res.redirect('/auth/register');
            });

        console.log('successfuly');
        res.redirect('/');
    }

و در آخر متد validationRecaptch هم محتویات زیر رو داره

     validationRecaptch(req, res) {
        return  new Promise((resolve, reject) => {
            this.recaptcha.verify(req, (err) => {
                if (err) {
                    reject(err);
                } else {
                    reject(false);
                }
            })
        })
    }

اما کد من ایراد داره و کار نمی کنه! وقتی فرم رو ارسال می کنم خطای زیر رو میگیرم :((

successfuly
(node:12182) UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:470:11)
    at ServerResponse.header (/home/myuser/workspace/nodejs/meetNodeJS/v1.2/node_modules/express/lib/response.js:771:10)
    at ServerResponse.location (/home/myuser/workspace/nodejs/meetNodeJS/v1.2/node_modules/express/lib/response.js:888:15)
    at ServerResponse.redirect (/home/myuser/workspace/nodejs/meetNodeJS/v1.2/node_modules/express/lib/response.js:926:18)
    at validationRecaptch.then.then.catch (/home/myuser/workspace/nodejs/meetNodeJS/v1.2/app/http/controller/AuthController.js:38:21)
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:12182) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:12182) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

و اصلا داخل catch نمیره در صورتی که باید بره و بیاد بیرون چیزی به ذهنتون میرسه منو نجات بدید؟


ثبت پرسش جدید
sariapro
@sariapro 3 سال پیش مطرح شد
0

رفقای nodejs کار :) التماس دعا


sariapro
@sariapro 3 سال پیش مطرح شد
0

اقا چند روزی هست می گیر کردم سر این. هر راهی هم به ذهنم میومد رو تست کردم اما نشد و نشد


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

ورود یا ثبت‌نام