2

私は2つのモデルを持っています

/**
 * Page Model
 * =============
 */

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

Page.add({
    name: { type: String, required: true },
    pid: { type: String, required: true , default:"123" },
    phone: { type: String },
    keyword : {type: Types.Relationship, ref: 'Keyword' , many: true},
    searchvol : {type: Types.Relationship, ref: 'Keyword' , many: true},
    pageType: { type: Types.Select, options: [
        { value: 'message', label: 'Just leaving a message' },
        { value: 'question', label: 'I\'ve got a question' },
        { value: 'other', label: 'Something else...' }
    ] },
    createdAt: { type: Date, default: Date.now }
});

Page.relationship({ path: 'keywords', ref: 'Keyword',    refPath: 'keyword' });
Page.relationship({ path: 'keywords', ref: 'Keyword',    refPath: 'searchvol' });

そしてキーワードモデル

/**
 * Keyword Model
 * =============
 */

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

Keyword.add({
    //name: { type: String, required: true },
    searchvol: { type: String },
    keywordType: { type: Types.Select, options: [
        { value: 'message', label: 'brand' },
        { value: 'question', label: 'exact match' },
        { value: 'other', label: 'Something else...' }
    ] },
    createdAt: { type: Date, default: Date.now }
});

検索ボリュームを管理 UI に含めて、並べ替えとフィルターを使用できるようにしたい

ただし、名前フィールドのみを含めることができるようで、そのフィールドを削除するとIDのみが表示されます。

これを修正する唯一の方法は、私の「結合」を処理するカスタムcrudインターフェースを構築することです。または、現在の設定で動作させる方法が存在します。

これは、これを行う方法に関する詳細を見つけたドキュメントへのリンクです。 http://keystonejs.com/docs/database/#relationships

4

1 に答える 1

4

@RaedMarji、Keystone は常に tonameフィールドを使用して、参照関係を表示します。ただし、あなたのような場合、nameフィールドがない場合は、既存のフィールドをマップしてモデルの名前のように振る舞わせることができます。

リスト定義を次のように更新するだけです。

var Keyword = new keystone.List('Keyword', {
    map: { name: 'searchvol' }
});
于 2015-02-11T09:34:33.160 に答える