KeystoneJS: Как установить поле для получения случайно сгенерированного значения? - PullRequest
0 голосов
/ 07 октября 2018

Я создаю модель, которую буду использовать для аутентификации пользователей для доступа к API, и у меня есть поле secret, в котором я хочу сохранить сгенерированное uuid/v4 кодированное значение *1003*.

Я просмотрел различные типы и варианты полей, но так и не увидел, как мне этого добиться.

Есть ли способ подключиться к созданию экземпляра модели и установить значение моего поля secret?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вот как я это настроил, также с помощью хука предварительного сохранения.Раньше моя проблема заключалась в том, что я снова получал одно и то же случайное число, пока не перезапустил сервер.

Store.schema.pre('save', function (next) {
    if (!this.updateId && this.isNew) {
        // generates a random ID when the item is created
        this.updateId = Math.random().toString(36).slice(-8);
    }
    next();
});

Использование this.isNew также было полезно в моем случае.

0 голосов
/ 10 октября 2018

Да, вы можете использовать pre hooks .

В вашей ситуации основы будут:

AuthenticationModel.schema.pre("save", function(next) {
  const secretValue = generateSecretValue();
  this.secret = secretValue;
  next();
});

Это будет до вашего финального AuthenticationModel.register(); в вашем файле model.js.

...