Strapi:全球模特的来源?

时间:2018-03-09 21:00:39

标签: strapi

例如,我已经创建了内容类型"项目"通过管理面板。在/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. 全球Itemstrapi.models.item之间的区别是什么?
  3. 我通过中间件支持GraphQL,所以我将模型放在上下文对象中。使用item模型的最佳方式是什么:服务,strapi.models.itemItem
  4. 谢谢。

    PS:如果Strapi的一位作者会读到这个,你能不能告诉你为什么要如此重视全球物体呢?

1 个答案:

答案 0 :(得分:2)

  1. 全局模型是在strapi-mongoosestrapi-bookshelf上创建的(取决于您使用的数据库)我们在此节点模块中创建模型实例。

  2. 他们之间没有区别Item === strapi.models.item

  3. 我认为您的中间件将具有动态逻辑,因此我建议您使用strapi.modelsstrapi.plugins[plugin].models

  4. 您可以自定义模型的全局名称,以便更易于使用https://strapi.io/documentation/guides/models.html#settings 因此,全局名称可以更改,但不能更改strapi对象中的路径。