我想添加多个选择选项字段。但是文档state不允许多重选择。但建议针对这种情况进行预钩。
在模型中存储字符串或数字。在中显示为选择字段 管理员界面。不允许选择多个项目。如果你 要提供多个值,可以使用TextArray或NumberArray, 尽管两者都不会具有相同的约束输入。 您可以限制 使用预保存的钩子选择这些选项。
我正在搜索预钩,但它似乎来自猫鼬。就我而言,我使用Keystone创建模型,以便可以在管理页面中使用它
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 },
});
那么我该如何创建预钩?例如,我想限制将TextArray设置为('a','b','c')?
答案 0 :(得分: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();