【问题标题】:Is there a way to reduce time complexity on the frontend with using Drupal json-api includes?有没有办法通过使用 Drupal json-api 来降低前端的时间复杂度?
【发布时间】:2022-08-24 00:29:31
【问题描述】:

我目前正在使用 Drupal json-api module 的输出,并注意到输出的结构通过强制前端开发人员重新格式化给定的 json 输出,在前面强制了 O(n^2) 时间复杂度问题对他们来说,附件可以在与它所属的实体相同的对象中。

例子

因此,假设我列出了一堆类别及其缩略图,以便在前端使用。 json 输出通常看起来像这样:

普通类json结构

[
   {
      \"uid\":123,
      \"category_name\":\"cars\",
      \"slug\":\"cars\",
      \"thumbnail\":\"example.com/cars.jpg\"
   },
   {
      \"uid\":124,
      \"category_name\":\"sports\",
      \"slug\":\"sports\",
      \"thumbnail\":\"example.com/sports.jpg\"
   }
]

使用drupal,缩略图似乎是独立于创建O(n ^ 2)的数据的。例如:

我使用此端点发出获取请求:

example.com/jsonapi/taxonomy_term/genre?fields[taxonomy_term--genre]=name,path,field_genre_image,vid&include=field_genre_image

从 drupal json api 模块返回的数据结构将与此类似:

伪代码以提高可读性

{
   \"data\":[
      {
         \"uid\":123,
         \"category_name\":\"cars\",
         \"slug\":\"cars\",
         \"relationships\":{
            \"thumbnail\":{
               \"id\":123
            }
         }
      },
      {
         \"uid\":124,
         \"category_name\":\"sports\",
         \"slug\":\"sports\",
         \"relationships\":{
            \"thumbnail\":{
               \"id\":124
            }
         }
      }
   ],
   \"included\":[
      {
         \"type\":\"file\",
         \"id\":123,
         \"path\":\"example.com/cars.jpg\"
      },
      {
         \"type\":\"file\",
         \"id\":124,
         \"path\":\"example.com/sports.jpg\"
      }
   ]
}

drupal 输出的问题是我必须循环遍历数据,然后在数据循环中循环遍历包含并将每个缩略图附加到导致前端 O(n^2) 的类别。

前端有没有办法使用 drupal json 模块请求一个类别,以包含该类别中的缩略图,就像上面的普通 json 输出一样,而无需在前端重构 json api?

请注意,我不是 drupal 开发人员,因此我可能使用的术语将被关闭。

  • 您能否再次检查您发布的伪代码?它看起来不像是有效的 JSON:API 文档。据我所知 Drupal 的 JSON:API 实现是符合标准的。我希望您在创建该伪代码时犯了一些错误。
  • @jelhan,我修复了伪代码。你的意思是 Drupals JSON 符合 JSON 标准吗?还是 Drupal 自己制定了标准?
  • 也许尝试一个将视图导出为 json 的模块,例如 Rest ViewsJSONapi Views,这样您就可以更轻松地以您喜欢的方式格式化 JSON。
  • @2pha,我是这个项目的前端开发人员。这是否需要对已经在使用 json:api 模块的 api 端点进行全面检查,或者这些模块是否会扩展该模块?
  • 需要创建所需的视图

标签: drupal time-complexity drupal-modules json-api


【解决方案1】:

JSON:API 可以输出一个实体列表并包含另一个实体列表(可以有不同的类型)。每个实体都有 UUID,因此,如果您将索引应用于它们的 UUID,访问它们可以是 O(logn) 甚至 O(0)

因此,您将有一个循环来解析每个包含的实体并存储和索引它们(如 SQLite),或者简单地循环所有包含的实体,通过 UUID 构建 1 个数组键,值是实体的对象

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-29
    • 2011-06-15
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2023-03-09
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多