2017-09-16 60 views
0

我正在掌握KeystoneJS並嘗試在AdminUI中顯示多對多關係。KeystoneJS,在模型中顯示多對多關係AdminUI

我有兩個模型,播放列表預告片。他們有許多一對多的關係,定義如下:

型號/ Playlist.js

Playlist.add('Playlist', { 
 
     name: { type: Types.Text, initial: true, required: true, index: true, unique: true }, 
 
     description: { type: Types.Textarea, initial: true, required: true }, 
 
    } 
 
); 
 

 
Playlist.relationship({ ref: 'Trailer', refPath: 'title', path: 'trailers' });

型號/ Trailer.js

Trailer.add('Trailer', { 
 
\t \t title: { type: Types.Text, required: true, initial: true, index: true }, 
 
\t \t playlists: { type: Types.Relationship, ref: 'Playlist', many: true }, 
 
\t } 
 
)

該關係在MongoDB中正確建模;在播放列表的拖車字段中有一個拖車ObjectID的數組。但是當我在AdminUI中查看播放列表時,我只看到「沒有相關的預告片...」

爲什麼不能正常工作?我想在AdminUI中看到關係。

圍繞此功能的文檔是無用的。只是沒有任何上下文的隨機代碼片段。我也在沒有任何運氣的情況下效仿實用Keystone JS中的例子。

回答

0

關於關係選項:

路徑是你想要的模型上的字段名稱。在這種情況下,我們可以稱之爲「預告片**」。

ref是被引用的模型(具有關係字段的模型)。在這種情況下,「拖車」。

refPath是具有該關係的參考模型中的字段。在這種情況下,「播放列表」。

試試這個:

//型號/ Playlist.js

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

Playlist.add({ 
    name: { type: Types.Text, initial: true, required: true, index: true, unique: true }, 
    description: { type: Types.Textarea, initial: true, required: true }, 
}); 

Playlist.relationship({ path: 'trailers', ref: 'Trailer', refPath: 'playlists' }); 

//型號/ Trailer.js

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

Trailer.add({ 
    title: { type: Types.Text, required: true, initial: true, index: true }, 
    playlists: { type: Types.Relationship, ref: 'Playlist', many: true }, 
}); 
+0

完美!我完全誤解了** refPath **選項。謝謝 – Twig2let

+0

完全沒問題。這個文件可以更清楚。 –