代码之家  ›  专栏  ›  技术社区  ›  Dmitrii Dushkin

斯特拉皮:全球模型来自哪里?

  •  0
  • Dmitrii Dushkin  · 技术社区  · 6 年前

    例如,我通过管理面板创建了内容类型“Item”。在里面 /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. 我想知道这个全球性的 项目 是否已创建?
    2. 全球 项目 strapi.models.item ?
    3. 我通过中间件支持GraphQL,所以我将把模型放在上下文对象中。最好的使用方法是什么 item 型号:like service, 斯特拉皮。型号。项目 项目 ?

    非常感谢。

    PS:如果Strapi的作者之一会读到这篇文章,你能告诉我为什么你这么频繁地使用全局对象吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Anuj Divkar    3 年前
    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 对象