Страпи: откуда берутся глобальные модели?

Например, я создал тип контента «Предмет» через админку. В /api/item/services/Item.js я вижу код вроде

 fetchAll: (params) => {
const convertedParams = strapi.utils.models.convertParams('item', params);

return Item
  .find()
  .where(convertedParams.where)
  .sort(convertedParams.sort)
  .skip(convertedParams.start)
  .limit(convertedParams.limit)
  .populate(_.keys(_.groupBy(_.reject(strapi.models.item.associations, {autoPopulate: false}), 'alias')).join(' '));
},

но Item не импортируется, поэтому он глобальный.

  1. Я хотел бы знать, в какой момент создается этот глобальный Item?
  2. В чем разница между global Item и strapi.models.item?
  3. Я делаю поддержку GraphQL через промежуточное программное обеспечение, поэтому я помещаю модель в объект контекста. Как лучше всего использовать item модель: например, сервис, strapi.models.item или Item?

Спасибо.

PS: если кто-то из авторов Strapi это прочитает, не могли бы вы рассказать, почему вы так интенсивно используете глобальные объекты?


person Dmitry Dushkin    schedule 09.03.2018    source источник


Ответы (1)


  1. Глобальные модели создаются на strapi-mongoose или strapi-bookshelf (в зависимости от используемой базы данных). Именно в этом модуле узлов мы создаем экземпляры ваших моделей.

  2. Между ними нет разницы Item === strapi.models.item

  3. Я думаю, что ваше промежуточное ПО будет иметь динамическую логику, поэтому я рекомендую вам использовать strapi.models и strapi.plugins[plugin].models.

Вы можете настроить глобальное имя своих моделей, чтобы их было проще использовать https://strapi.io/documentation/developer-docs/latest/development/backend-customization.html#models Таким образом, можно изменить глобальное имя, но не путь в объекте strapi.

person Jim LAURIE    schedule 10.03.2018