Обновление объекта в массиве с помощью генератора API Strapi - PullRequest
0 голосов
/ 13 марта 2020

Контекст: Я создаю Nuxt PWA, используя Strapi для генерации REST API. В данный момент я работаю над созданием способа обновления массива в модели user. Массив представляет собой 'Dynami c Zone' , который содержит 'компонент', который определяет одностороннее отношение и простое числовое значение.

Проблема: Исходя из следующего из Strapi docs я ошибочно предположил, что могу обновить конкретный c компонентный объект в массиве 'Dynami c Zone', используя out PUT запрос. В документах запрос PUT описывается так:

Частично обновляет запись по id и возвращает ее значение. Поля, которые не отправляются в запросе, не изменяются в БД.

Псевдокод моего текущего запроса следующий. Я ожидал, что это будет сделано для обновления свойства value компонента (полученного с помощью id) в массиве зоны Dynami c:

axios.put('baseURL/users/:id', { 
   'DynamicZoneName': [ 
      { 
        '__component: 'relationships.componentName', 
        'id': Number, 
        'value': Number 
      } 
    ] 
   }, { headers ... } 
)

Однако при этом возвращается 200 OK, ответ удаляет оставшиеся «компонентные» объекты в массиве. Теперь я понимаю, что это потому, что запрос берет весь массив из ключа DynamicZoneName как [ { '__component: 'relationships.componentName', 'id': Number, 'value': Number } ] и обновляет весь массив DynamicZoneName до этого нового значения.

Мой вопрос: возможно ли это? делать то, что я изначально намеревался делать с использованием пользовательских маршрутов и контроллеров со Strapi. Будет ли теоретически возможным получить объекты, которые я буду sh обновлять по настраиваемому маршруту , а затем обработать запрос с помощью настраиваемого контроллера , который обновляет база данных? (Использование полученного id для манипулирования объектом на DynamicZoneName.indexOf[id])

Или, лучше было бы (1) GET весь массив, (2) локально манипулировать им в моем приложении Nuxt а затем (3) PUT вернуть обратно, используя запрос, который я уже написал?

Это будет массив, содержащий 100 объектов, каждый из которых будет иметь как минимум три пары ключ-значение и еще один вложенный объект. Имея это в виду, я обеспокоен пропускной способностью запроса для обоих процессов и (учитывая, что это мой первый раз в разработке PWA) не уверен в передовой практике или общем пути к достижению!

В настоящий момент, мы также собираемся разбить большой массив DynamicZoneName на несколько меньших массивов, чтобы сделать их более управляемыми для повторения. Я более чем рад услышать о других, более общих методах выполнения подобных вещей, если это архитектурно неудачный способ построения API.

...