Так мы устанавливаем отношения в Keystone, как вы можете видеть ниже.Допустим, у меня есть режим страницы и страница второго уровня. А затем у меня есть скрипт, который будет получать данные страницы.Это возможно в мангуст и трапецеидальных искажений.Если я сделаю запрос к списку страниц, то я также получу соответствующую причину данных страницы второго уровня из моего кода ниже, когда я получу список страниц, он просто включает в себя массивы идентификаторов связанной страницы второго уровня.Я хочу получить все страницы второго уровня, связанные со страницей, в одном ответе (locals.data.toplevelpages).
Page
Pages.add({
name: { type: String, required: true },
key: { type: String, required: false },
link_destination : { type: Types.Url, require: true},
second_level_page: { type: Types.Relationship, ref: 'SecondLevelPage', many: true },
publishedDate: { type: Types.Date, index: true, dependsOn: { state: 'published' } },
state: { type: Types.Select, options: 'draft, published, archived', default: 'draft', index: true },
});
SecondLevelPage
SecondLevelPage.add({
title: { type: String, required: true },
slug: { type: String, index: true },
state: { type: Types.Select, options: 'draft, published, archived', default: 'draft', index: true },
author: { type: Types.Relationship, ref: 'User', index: true },
publishedDate: { type: Types.Date, index: true },
content: {
html: { type: Types.Html, wysiwyg: true, height: 600 }
},
});
Скриптзагрузить данные страницы
view.on('init', function (next) {
var q = keystone.list('Pages').paginate({
page: req.query.page || 1,
perPage: 10,
maxPages: 10,
filters: {
state: 'published',
},
})
.sort('publishedDate')
q.exec(function (err, results) {
locals.data.pages = results;
console.log("Response data :" , locals.data.pages)
next(err);
});
});
Данные ответа:
{ total: 8,
results:
[ { _id: 5d26e5bd30656a14a40d7594,
key: 'home',
name: 'New',
__v: 1,
link_destination: '/',
publishedDate: 2019-07-10T16:00:00.000Z,
state: 'published',
second_level_page: [Array] }, // contains ids from second level
]
}