我正在处理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的例子,没有任何运气。
答案 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 },
});