Запросить квитирование возраста (с даты рождения) - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу, чтобы мои пользователи были старше 8 лет, когда они регистрируются.Я следовал этому примеру, чтобы создать свой собственный валидатор: http://docs.sequelizejs.com/manual/models-definition.html#validations. Вот оно:

// In a model file 

module.exports = (sequelize, Sequelize) => {
  return sequelize.define('Utilisateur', {
    // ...
    DateNaissance: {
      type: Sequelize.DATEONLY,
      validate: {
        isOldEnough(value) {
          let ageCheck = new Date(Date.now());
          ageCheck.setFullYear(ageCheck.getFullYear-8);
          if (ageCheck < value) {
            throw new Error('Too young');
          }
        }
      }
    }
  }, {
      timestamps: false
    });
}

Дело в том, что когда я пытаюсь зарегистрировать этого пользователя, он работает, тогда как не должен:

{
    "email": "test@test.com",
    "password": "12345678",
    "prenom": "prenomTest",
    "nom": "nomTest",
    "dateNaissance": "2018-03-03", // <<--
    "nomVillage": "villageTest",
    "NPA": "9999",
    "noRue": 42,
    "nomRue": "Chemin du test"
}

Мне также интересно, действительно ли это можно сделать с помощью моделей Sequelize, учитывая, что определение модели будет сделано только один раз ?!Возможно, я должен сделать эту проверку в триггере?

1 Ответ

0 голосов
/ 16 апреля 2019

Я наконец смог сделать это с крючками (beforeCreate):

// ...
DateNaissance: {
      type: Sequelize.DATEONLY,
      validation: {
        isDate: true,
      }
    }
  }, {
      timestamps: false,
      hooks: {
        beforeCreate: function (user, options) {

          let ageCheck = new Date();
          ageCheck.setFullYear(ageCheck.getFullYear() - 8);
          let birthDate = new Date(user.DateNaissance);
          if (ageCheck < birthDate) {
            throw new Error('Too young');
          }
        }
      }
    });
}

крючками doc

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