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

时间:2017-09-16 21:08:46

标签: javascript mongodb many-to-many relationship keystonejs

我正在处理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', {
		title: { type: Types.Text, required: true, initial: true, index: true },
		playlists: { type: Types.Relationship, ref: 'Playlist', many: true },
	}
)

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

为什么这不起作用?我想在AdminUI中看到关系。

有关此功能的文档无用。只是随机代码片段没有任何上下文。我也跟着Practical Keystone JS的例子,没有任何运气。

1 个答案:

答案 0 :(得分:1)

关于关系选项:

路径是模型上字段所需的名称。在这种情况下,我们可以将其称为“预告片**。

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

refPath 是引用模型中具有该关系的字段。在这种情况下'播放列表'。

试试这个:

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