С Dex ie, как удалить значение из поля массива для всех объектов в таблице? - PullRequest
0 голосов
/ 08 февраля 2020

С этот вопрос Я могу найти все объекты в моей таблице, где значение встречается в поле, являющемся массивом. Теперь мне нужно удалить это значение из этого поля для всех объектов в этой таблице.

Например, предположим, что таблица events с объектами:

{ people: ['John', 'Bob', 'Sue'] }
{ people: ['Harry', 'Sue', 'Jim'] }
{ people: ['John', 'Bob', 'Elaine'] }
{ people: ['Jim', 'Bob', 'Sue'] }

Предположим, я хочу удалите 'Sue' из поля people для всех объектов.

Как это сделать с Dex ie?

1 Ответ

0 голосов
/ 08 февраля 2020

Добавление следующего кода в асинхронную функцию c сделает это:

await db.events.where('people').equals('Sue').modify(x => {
  // This callback is run for every match.
  // Here you can modify the people property to remove Sue from it:
  x.people = x.people.filter(p => p !== 'Sue');
});

Примечание: Предположим, что схема индексирует 'people' с индексом multiEntry:

const db = new Dexie("testdb");
db.version(3).stores({
  events: 'id, *people'
});

Ссылки:

...