【发布时间】:2019-03-12 07:18:56
【问题描述】:
我正在创建一个模型,用于对用户进行 API 访问身份验证,并且我有一个 secret 字段,我想在其中存储 Base64 编码的 uuid/v4 生成值。
我浏览了不同的字段类型和选项,但仍然不知道如何实现这一点。
有没有办法挂钩模型实例的创建,并设置我的 secret 字段的值?
【问题讨论】:
标签: random keystonejs
我正在创建一个模型,用于对用户进行 API 访问身份验证,并且我有一个 secret 字段,我想在其中存储 Base64 编码的 uuid/v4 生成值。
我浏览了不同的字段类型和选项,但仍然不知道如何实现这一点。
有没有办法挂钩模型实例的创建,并设置我的 secret 字段的值?
【问题讨论】:
标签: random keystonejs
这就是我设置它的方式,还有预保存挂钩。我之前的问题是我再次获得相同的随机数,直到我重新启动服务器。
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 也很有用。
【讨论】:
是的,您可以使用pre hooks。
在您的情况下,基本情况是:
AuthenticationModel.schema.pre("save", function(next) {
const secretValue = generateSecretValue();
this.secret = secretValue;
next();
});
这将在您的 model.js 文件中的最终 AuthenticationModel.register(); 之前进行。
【讨论】: