Keystone JS получает связанные предметы - Отношения - PullRequest
1 голос
/ 11 июля 2019

Так мы устанавливаем отношения в 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


  ]

}
...