如何格式化和验证出生日期节点js

时间:2018-09-23 10:42:05

标签: node.js angular validation date express

我希望用户会> 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
}

谢谢!

2 个答案:

答案 0 :(得分:0)

为此花点时间。当您使用nodeJs时,它应该相当容易。 array = [ { fruit: "Apple", quantity: "11", }, { fruit: "Banane", quantity: "3", }, { fruit: "Kiwi", quantity: "5", }, { fruit: "Ananas", quantity: "10", } ] 。您可以像这样

在路由器中使用它
https://momentjs.com/

现在检查年份是否大于18。如果不是这样,则在小于18的情况下将错误返回给用户。但是最好的方法是在前端进行检查,并在可能的地方给出错误。

答案 1 :(得分:0)

您可以用猫鼬编写自定义验证器

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