如何添加预钩keystonejs?

问题描述 投票:0回答:1

我要添加多重选择字段选项。但该文档state是不允许多选。但建议预挂钩的话。

存储在模型中的字符串或数字。显示在管理UI中的选择字段。不允许多个项目被选中。如果要提供多个值,可以使用TextArray或NumberArray,但也不会有相同的限制输入。您可以使用预存钩限制的选项。

我搜索前钩但似乎来自猫鼬。而在我的情况,我创建使用梯形校正模型,这样我可以在管理页面使用

var keystone = require('keystone');
var Types = keystone.Field.Types;

var MyModel = new keystone.List('MyModel');

MyModel.add({
    aField: { type: Types.TextArray, required: false, initial: true },
});

让我怎么创建预挂钩?例如,我想限制要被设置的(“A”,“B”,“C”)的TextArray?

keystonejs
1个回答
0
投票

我已经设置了预存挂钩像这样(或与此类似。没有测试此代码)。

var keystone = require('keystone');
var Types = keystone.Field.Types;

/**
 * Musician Model
 * ==========
 */

var Musician = new keystone.List('Musician', {
    map: { name: 'title' },
    autokey: { path: 'slug', from: 'title', unique: true },
});

Musician.add({
    title: { type: String, required: true },
    published: { type: Types.Boolean, default: false },
    musicianId: { type: String, note: noteUpdateId },    
});

Musician.schema.pre('save', function (next) {
    console.log(this.title);
    console.log(this.isNew);
    if (this.isNew) {
        // generates a random ID when the item is created
        this.musicianId = Math.random().toString(36).slice(-8);
    }
    next();
});

Musician.defaultColumns = 'title, published, musicianId';
Musician.register();
© www.soinside.com 2019 - 2024. All rights reserved.