2017-02-26 82 views
1

我想爲Post模型實現嵌套類別。Keystone.js嵌套類別

我有什麼:

Post.add({ 
    title: { type: String, required: true }, 
    state: { type: Types.Select, options: 'draft, published, archived', default: 'draft', index: true }, 
    author: { type: Types.Relationship, ref: 'User', index: true }, 
    publishedDate: { type: Types.Date, index: true, dependsOn: { state: 'published' } }, 
    content: { 
     extended: { type: Types.Html, wysiwyg: true, height: 300 }, 
    }, 
    categories: { type: Types.Relationship, ref: 'PostCategory', index: true } 
}); 

而且類別

PostCategory.add({ 
    name: { type: String, required: true }, 
    subCategories: { type: Types.TextArray } 
}); 

現在我可以子類別列表添加到每個類別。 我不能做的是在創建帖子時顯示子類別。另外,如果我更改類別,我需要加載與選定類別相關的子類別。

我的計劃是通過手錶功能實現,但它似乎只適用於保存。

另一件事我在想是添加子類別的關係,見參考文獻:

categories: { type: Types.Relationship, ref: 'PostCategory.subCategories', index: true } 

但它不工作爲好。

所以,如果有人有任何想法如何實現,請分享。 謝謝。

P.S.請毫不猶豫地詢問任何其他信息。

回答

0

我通過創建一個新的模型「PostSubCategory」,允許用戶時,他們創建子類別分配父類別的子類別創建嵌套類:

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

/** 
* PostSubCategory Model 
* ================== 
*/ 

var PostSubCategory = new keystone.List('PostSubCategory', { 
    autokey: { from: 'name', path: 'key', unique: true }, 
}); 

PostSubCategory.add({ 
    name: { 
    type: String, 
    required: true 
    }, 
    parentCategory: { 
    type: Types.Relationship, 
    ref: 'PostCategory', 
    required: true, 
    initial: true 
    } 
}); 


PostSubCategory.relationship({ ref: 'Post', path: 'subcategories' }); 

PostSubCategory.register(); 

然後在我的Post.js,我添加一個字段選擇與該領域的過濾器的子類別只從選定的父類的子類兒童選擇:

subcategory: { 
    type: Types.Relationship, 
    ref: 'PostSubCategory', 
    many: false, 
    filters: { parentCategory: ':categories' } 
} 

我不知道有多好,這將更深層次的嵌套工作,我確實有一個問題他編輯發佈管理員用戶界面,更改某個帖子的父類別不會更新可供選擇的子類別,直到您保存並刷新爲止。但是讓我走得足夠遠,可以讓父母/孩子類別發揮作用。