簡體   English   中英

如何在Keystone.js列表映射中指定多個字段?

[英]How to specify multiple fields in Keystone.js List Map?

想知道如何在Keystone.js列表映射中指定多個字段。

例如,基於Keystone數據模型文檔:

http://keystonejs.com/docs/database/

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

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

Post.add({
    title: { type: String, required: true },
    state: { type: Types.Select, options: 'draft, published, archived', default: 'draft' },
    author: { type: Types.Relationship, ref: 'User' },
    createdAt: { type: Date, default: Date.now },
    publishedAt: Date,
    image: { type: Types.CloudinaryImage },
    content: {
        brief: { type: Types.Html, wysiwyg: true, height: 150 },
        extended: { type: Types.Html, wysiwyg: true, height: 400 }
    }
});

Post.defaultColumns = 'title, state|20%, author, publishedAt|15%'
Post.register();

我是否可以使用標題和作者來創建地圖,這樣兩個字段都將用於外部模型關系?

var Post = new keystone.List('Post', {
    autokey: { path: 'slug', from: 'title', unique: true },
    map: { name: 'author, title' },
    defaultSort: '-createdAt'
});

我在Admin UI中有一個“未定義”。

我可以通過Genereated Value實現多鍵映射:

示例模型Post可以寫成如下:

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

var Post = new keystone.List('Post', {
    autokey: { path: 'slug', from: 'newKey', unique: true },
    map: { name: 'newKey' },
    defaultSort: '-createdAt'
});

Post.add({
    newKey: { type: Types.Text, watch: true, noedit: true, value: function (callback) {
        var author = this.author;
        var title = this.title;
        keystone.list('User').model.findOne({_id: this.author.toString()}).exec(function (err, u) {
            if (err) {
                callback(err, "unknown")
            } else {
                var r = "("+u.name.first+" "+u.name.last+")-"+title;
                callback(null, r)
            }
        });
    }},
    title: { type: String, required: true, index: true, initial: true },
    state: { type: Types.Select, options: 'draft, published, archived', default: 'draft' },
    author: { type: Types.Relationship, ref: 'User', index: true, initial: true },
    createdAt: { type: Date, default: Date.now },
    publishedAt: Date,
    image: { type: Types.CloudinaryImage },
    content: {
        brief: { type: Types.Html, wysiwyg: true, height: 150 },
        extended: { type: Types.Html, wysiwyg: true, height: 400 }
    }
});

Post.defaultColumns = 'title, state|20%, author, publishedAt|15%'
Post.register();

對於上述模型,在創建Post時,它最初將要求標題和作者:

在此輸入圖像描述

這將創建一個像這樣的帖子,將mutliple字段作為地圖:

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM