Keystone.js Admin UI - 表单中没有字段

Eug*_*ene 3 node.js keystonejs

我创建了这样一个模型:

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

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

Page.add({
    keyword: { type: Types.Key, required: true, initial: false },
    slug: { type: Types.Key, required: true, initial: false },
    type: { type: Types.Select, options: 'textpage, projects, services, contacts, homepage', default: 'textpage' },
    menuTitle: { type: String, required: true, initial: false },
    pageTitle: { type: String },
    pageContent: { type: Types.Html, wysiwyg: true, height: 400 },
    seoTitle: { type: String },
    seoKeywords: { type: String },
    seoDescription: { type: String },
    isActive: { type: Types.Boolean }
});

Page.defaultColumns = 'keyword, slug, menuTitle, isActive';
Page.register();
Run Code Online (Sandbox Code Playgroud)

我希望它会生成一个对象列表和一个表单来创建这些对象.但表格没有字段.在此输入图像描述

我究竟做错了什么?或者我还应该做些什么才能获得包含所有字段的表单?

Jed*_*son 11

基本上,您没有看到任何字段,因为您可以initial选择设置所有字段false.

initial默认false为"名称"字段除外 - 即默认情况下为具有路径的字段name或与您为Keystone提供的映射相匹配的路径name,在您的情况下menuTitle.

所以通常你的menuTitle领域会出现,期望你明确告诉它不要使用initial: false设置.

要显示字段,只需设置您想要的字段initial: true,如下所示:

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

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

Page.add({
    keyword: { type: Types.Key, required: true, initial: true },
    type: { type: Types.Select, options: 'textpage, projects, services, contacts, homepage', default: 'textpage' },
    menuTtle: { type: String, required: true, initial: true },
    pageTitle: { type: String, initial: true },
    pageContent: { type: Types.Html, wysiwyg: true, height: 400 },
    seoTitle: { type: String },
    seoKeywords: { type: String },
    seoDescription: { type: String },
    isActive: { type: Types.Boolean }
});

Page.defaultColumns = 'keyword, slug, menuTitle, isActive';
Page.register();
Run Code Online (Sandbox Code Playgroud)

另外值得注意的是,您不需要实际添加slug字段; 由于您的autokey设置,它会自动添加到架构中.