IndexedDB - это способ хранить данные в браузере.
Это позволяет нам хранить большие объемы данных, чем локальное хранилище, асинхронным способом.
Dexie упрощает работу с IndexedDB.
В этой статье мы рассмотрим, как начать работать с IndexedDB с Dexie.
Игнорировать первые n элементов перед заданным смещением
Мы можем вызвать метод offset
, чтобы вернуть первые n
элементов после заданного смещения.
Например, мы можем использовать его, написав:
const db = new Dexie("friends"); db.version(1).stores({ friends: "id, name, age" }); (async () => { await db.friends.put({ id: 1, name: "jane", age: 78 }); await db.friends.put({ id: 2, name: "mary", age: 76 }); await db.friends .orderBy('name') .offset(10); })()
Затем мы пропускаем первые 10 результатов в коллекции и включаем остальные.
Логическая операция ИЛИ
Мы можем использовать метод or
, чтобы объединить 2 условия вместе с оператором логического ИЛИ в запросе.
Например, мы можем написать:
const db = new Dexie("friends"); db.version(1).stores({ friends: "id, name, age" }); (async () => { await db.friends.put({ id: 1, name: "jane", age: 78 }); await db.friends.put({ id: 2, name: "mary", age: 76 }); const someFriends = await db.friends .where("name") .equalsIgnoreCase("jane") .or("age") .above(40) .sortBy("name") console.log(someFriends) })()
Мы вызываем where
с аргументом 'name'
для запроса по имени.
И мы находим записи с заданным именем с equalsIgnoreCase
.
Затем мы вызываем or
, чтобы найти элементы с age
выше 40.
И мы вызываем sortBy
для сортировки по полю name
.
Получить массив, содержащий все первичные ключи коллекции
Мы можем использовать метод primaryKeys
, чтобы вернуть обещание с массивом первичных ключей в коллекции.
Например, мы можем использовать его, написав:
const db = new Dexie("friends"); db.version(1).stores({ friends: "id, name, age" }); (async () => { await db.friends.put({ id: 1, name: "jane", age: 78 }); await db.friends.put({ id: 2, name: "mary", age: 76 }); const keys = await db.friends .where("name") .equalsIgnoreCase("jane") .primaryKeys() console.log(keys) })()
id
- это первичный ключ каждой записи.
Затем мы вызываем primaryKeys
, чтобы вернуть обещание с массивом первичных ключей.
Получите сырые результаты
Мы можем получить необработанные результаты запроса с помощью метода raw
.
Результаты не будут фильтроваться через крючки для чтения.
Например, мы можем написать:
const db = new Dexie("friends"); db.version(1).stores({ friends: "id, name, age" }); (async () => { await db.friends.put({ id: 1, name: "jane", age: 78 }); await db.friends.put({ id: 2, name: "mary", age: 76 }); const keys = await db.friends .where("name") .equalsIgnoreCase("jane") .raw() .toArray() console.log(keys) })()
использовать это.
Использование raw
не приведет к таким вещам, как сопоставление объектов с их сопоставленным классом.
Заключение
Мы можем игнорировать первые n
элементов результатов, получать первичные ключи и получать необработанные результаты из коллекции IndexedDB с помощью Dexie.