hossein
5 سال پیش توسط hossein مطرح شد
3 پاسخ

نمایش ارور به صورت جیسون در نود جی اس

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

const { check, validationResult } = require('express-validator');

getDataRegistration(req, res, next) {
        check('name', 'فیلد نام نباید خالی باشد').isEmpty();
        check('name', 'نام باید بیشتر از 7 کاراکتر باشد').isLength({ min: 7 })
        check('email', 'فیلد ایمیل نباید خالی باشد').isEmpty();
        check('email', 'ایمیل معتبر وارد کنید').isEmail();
        check('password', 'فیلد پسورد نباید خالی باشد').isEmpty();
        check('password', 'پسور باید بیش از 5 کاراکتر باشد').isLength({ min: 5 });

        const errors = validationResult(req);
        if (!errors.isEmpty()) {
            return res.status(422).json({ errors: errors.array() });
        }
        res.json(req.body);
    }

متد داخل کنترلر نوشته شده و توی روت ها فراخونی شده به همین خاطر میگم که از این بابت مشکلی نیست به عنوان مثال اگر محتوایی داخل فرم باشه به صورت جیسون ارسال میشه فقط در ارسال ارورها مشکل هست میخوام ارورها به صورت
آرایه ای از پارامترهای مسیج و لوکال و پارام و ولیو نشون داده بشه تا مسیج ها رو استخراج کنم که ارسال میشه ولی به صورت خالی :

{
"name": "",
"email": "",
"password": ""
}

ثبت پرسش جدید
hossein
تخصص : برنامه نویس angular-node-js
@hossein.hedyeh 5 سال پیش آپدیت شد
0

@hesammousavi
آقای موسوی لطفا حداقل شما جواب بدین دوستان که لطفشون شامل حال ما نشد
در ضمن سوالم مربوط به دوره ساخت یک وبسایت آموزشی نود جی اس هست که متاسفانه بعضا شاهد هستیم روش هایی که شما رفتید دیگه کاربرد نداره یا توابع و متدهاشون تغییر میکنن یا حذف میشن و مجبور میشیم خودمون دست به کار بشیم و این سوالم در همین راستاست


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

سلام
اگر از ورژن‌ پکیج‌های که در طول دوره استفاده کردیم، استفاده بفرمایید مشکلی براتون بوجود نمیاد. اما هر روز شاهد آپدیت شدن هستیم و عملا هیچ دوره آموزشی نمیتونه بگه پکیج‌های که استفاده شده بدونه تغییر هست .
در ضمن من بارها گفتم منابع پکیج‌ها رو مرجع قرار بدید چون تغییرات زیاده . برای مثال در ورژن جدید شما نباید به این شکل اعتبار سنجی بفرمایید داستان به شکل زیر هست

// ...rest of the initial code omitted for simplicity.
const { check, validationResult } = require('express-validator');

app.post('/user', [
  // username must be an email
  check('username').isEmail(),
  // password must be at least 5 chars long
  check('password').isLength({ min: 5 })
], (req, res) => {
  // Finds the validation errors in this request and wraps them in an object with handy functions
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    return res.status(422).json({ errors: errors.array() });
  }

  User.create({
    username: req.body.username,
    password: req.body.password
  }).then(user => res.json(user));
});

hossein
تخصص : برنامه نویس angular-node-js
@hossein.hedyeh 5 سال پیش آپدیت شد
0

@hesammousavi
البته که به مستندات نگاه میکنم ، همیشه روش کارم هست و البته نگاه کردن به مثالهایی که در سطح وب که پیاد میشن نیز همیشه در دستور کارم هست
این چیزی هم که شما نوشتید رو هم بارها دیدم ، بعد از 5 روز دیشب مشکل رو پیدا کردم توی ورژن فعلی express-validator باگ وجود داره و متد isEmpty() برای چک کردن کار نمیکنه، به جاش باید از همون notEmpty() استفاده بشه
ولی مشکلی که هست با همین متد وقتی ولیدیشن رو داخل متد post انجام میدی یعنی داخل فایل روت مشکلی نداره
اما اگر بخوای ریفکتور کنی و ولیدیشن رو انتقال بدی به کلاس کنترلر باز همون اتفاق میفته و ارورها برگشت داده نمیشه
حالا اگر شما وقت میکنید این رو حل کنید که چ خوب در غیر این صورت میزارم ولیدیشن این قسمت فعلا در داخل روت انجام بشه

البته جهت یادآوری نسخه های مورد استفاده شما رو هم نصب و چک کردم ولی بازم جواب نداد شاید گیرکار از من بوده ، نمیدونم.
ممنون


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

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