簡體   English   中英

如何格式化和驗證出生日期節點js

[英]How to format and validate birth date node js

我希望用戶> 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>

在我的usersRouter中,我具有注冊功能:

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

另外,我使用mongo,在UserSchema中,我將其作為生日:

birthDate: {
        type: Date,
        required: true
}

謝謝!

為此使用時刻。 當您使用nodeJs時,它應該相當容易。 https://momentjs.com/ 您可以像這樣在路由器中使用它

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

現在檢查年份是否大於18。 如果不是,則在小於18的情況下將錯誤返回給用戶。但是最好的方法是在前端進行檢查,並在可能的情況下給出錯誤。

您可以用貓鼬編寫自定義驗證器

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM