oknosoft / metadata.js

Library for building offline-first browser-based applications :: платформа автономных веб-приложений
MIT License
189 stars 75 forks source link

исправление если колбэк возвращает истину #425

Closed rnpoddor closed 5 years ago

rnpoddor commented 5 years ago

При использовании метода find_rows, если передать в качестве фильтра колбэк и он возвращает имстину, что означает элемент должен добавиться в массив результата, это не происходит.

unpete commented 5 years ago

callback - это не фильтр, а обработчик итераций find_rows. Пока ошибки не вижу. Приведите пример использования.

rnpoddor commented 5 years ago
const specRows = ox.specification.find_rows({ elm: elm.elm }, row => {
  const {nom: {elm_type}} = row;
  return elm_type === $p.enm.elm_types.Рама || elm_type === $p.enm.elm_types.Створка
    || elm_type === $p.enm.elm_types.Импост || elm_type === $p.enm.elm_types.Штульп;
});
rnpoddor commented 5 years ago

callback - это не фильтр, а обработчик итераций find_rows.

Мне кажется логичным его сделать фильтром, т.к. он сможет совмещать функции обработчика и фильтра. Внес исправление в коммит.

rnpoddor commented 5 years ago

Вообще предназначение этого колбэка какое-то странное, если в нем вернуть false, поиск прекращается, получается была необходимость возвращать первые N элементов до какого-то условия?

unpete commented 5 years ago

Если для фильтрации нужна функция, её можно передать вместо условия или одним из реквизитов условия в первом аргументе. Прекращение перебора при возврате false, нужно чтобы прекратить перебор. Например, когда нужно первое вхождение.