KeystoneJS:如何设置字段以接收随机生成的值?

时间:2018-10-07 12:11:10

标签: random keystonejs

我正在创建一个模型,该模型将用于验证用户的API访问权限,并且我有一个Mat imrgb = imread("src.tif", CV_LOAD_IMAGE_COLOR); Mat bgr[3]; split(imrgb, bgr); double average[600][800]; for(int j=0; j<=599;j++ ) { for(int i=0; i<=799; i++) { average[j][i] =((((float)(bgr[0].at<uchar>(j,i)) + (float)(bgr[1].at<uchar>(j,i)) +(float)(bgr[2].at<uchar>(j,i))))/(3)); } } for(int j=0; j<=599;j++ ) { for(int i=0; i<=799; i++) { average[j][i] = average[j][i] / 255; } } src = Mat(600, 800, CV_64F, &average); vector<float>gx; vector<float>mult_vec; for(int i=0; i<vec_first.size(); i++) { mult_vec.push_back(vec1[i] * vec2[i]); } for(int i=0; i<mult_vec.size(); i++) { gx.push_back((exp(-mult_vec[i] / C); } for(int i = 0; i < gx.size(); i++) { gy.push_back(gx[i]); } Mat gyMat=Mat(5, 1, CV_32F); memcpy(gyMat.data, gy.data(), gy.size()*sizeof(float)); Mat gykernel; cv::transpose(gy, gykernel); filter2D(src, xma, -1 , gykernel, Point( -1, -1 ), 0, BORDER_DEFAULT ); for(j=0; j<=599;j++ ) { for(i=0; i<=799; i++) { xma_[j][i] =(double)(xma.at<uchar>(j,i)); } } 字段,我想在其中存储secret编码的Base64生成的值。

我经历了不同的字段类型和选项,但是仍然看不到如何实现此目的。

是否可以挂接模型实例创建并设置我的uuid/v4字段的值?

2 个答案:

答案 0 :(得分:3)

是的,您可以使用pre hooks

根据您的情况,基本知识如下:

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

那会在您的model.js文件中最后一个AuthenticationModel.register();之前。

答案 1 :(得分: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也很有用。