【问题标题】:KeystoneJS: How to set a field to receive randomly generated value?KeystoneJS:如何设置一个字段来接收随机生成的值?
【发布时间】:2019-03-12 07:18:56
【问题描述】:

我正在创建一个模型,用于对用户进行 API 访问身份验证,并且我有一个 secret 字段,我想在其中存储 Base64 编码的 uuid/v4 生成值。

我浏览了不同的字段类型和选项,但仍然不知道如何实现这一点。

有没有办法挂钩模型实例的创建,并设置我的 secret 字段的值?

【问题讨论】:

    标签: random keystonejs


    【解决方案1】:

    这就是我设置它的方式,还有预保存挂钩。我之前的问题是我再次获得相同的随机数,直到我重新启动服务器。

    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 也很有用。

    【讨论】:

      【解决方案2】:

      是的,您可以使用pre hooks

      在您的情况下,基本情况是:

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

      这将在您的 model.js 文件中的最终 AuthenticationModel.register(); 之前进行。

      【讨论】:

      • 谢谢,正是我需要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 2019-04-14
      • 1970-01-01
      相关资源
      最近更新 更多