KeystoneJS,在模型 AdminUI 中显示多对多关系

KeystoneJS, display many-to-many relationships in the model AdminUI

我正在掌握 KeystoneJS 并尝试在 AdminUI 中显示多对多关系。

我有两个模型,playlisttrailer。它们是多对多的关系,定义如下:

models/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' });

models/Trailer.js

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

关系在 MongoDB 中正确建模;播放列表的预告片字段中有一组预告片 ObjectID。但是当我在 AdminUI 中查看播放列表时,我只看到 "No related trailers..."

为什么这行不通?我想在 AdminUI 中查看关系。

有关此功能的文档毫无用处。只是没有任何上下文的随机代码片段。我也遵循了 Practical Keystone JS 中的示例,但没有任何运气。

关于关系选项:

path 是模型字段的名称。在这种情况下,我们可以称之为“预告片**”。

ref 是被引用的模型(具有关系字段的模型)。在这种情况下,'Trailer'.

refPath 是引用模型中具有关系的字段。在这种情况下 'playlists'.

试试这个:

// models/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' });

// models/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 },
});