Как отформатировать и проверить дату рождения узла js - PullRequest
0 голосов
/ 23 сентября 2018

Я бы хотел, чтобы пользователям было> 18 лет.Таким образом, введенная дата рождения должна быть> 18 лет.

Каков наилучший способ сделать это?

У меня есть компонент для регистрации, и у меня есть поле как это:

<mat-form-field id="birth-date">
              <input matInput [matDatepicker]="picker" placeholder="mm/dd/yy" name="birthDate" [(ngModel)]="birthDate">
              <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
              <mat-datepicker #picker></mat-datepicker>
</mat-form-field>

В моем userRouter у меня есть функция для регистрации:

router.post('/users/register', (req, res) => {
        ...
        const user = new User({
            ...
            birthDate: req.body.birthDate,
            ...
        });
     ...
});

Также я использую mongo и в UserSchema у меня это для даты рождения:

birthDate: {
        type: Date,
        required: true
}

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вы можете написать собственный валидатор в мангусте

birthDate: {
        type: Date,
        validate: {
          validator: function(v) {
            v.setFullYear(v.getFullYear()+18)
            const currentTime = new Date();
            currentTime.setHours(0,0,0,0);
            return v.getTime() <= currentTime.getTime();
          },
          message: props => 'You must be 18 years old.'
        },
        required: true
    }

Ссылка: https://mongoosejs.com/docs/validation.html

0 голосов
/ 23 сентября 2018

Используйте момент для этого.Поскольку вы используете nodeJs, это должно быть довольно просто.https://momentjs.com/.Вы можете использовать его в своем роутере следующим образом:

var years = moment().diff(req.body.birthDate, 'years');

Теперь проверьте, больше лет или нет.Если нет, то верните ошибку пользователю, если его значение меньше 18. Но лучше всего было бы проверить ее в переднем конце и, если можно, выдать ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...