Svelte custom store подключается к базе данных REDIS - PullRequest
0 голосов
/ 26 апреля 2020

Я не могу подключиться к базе данных Redis внутри приложения Svelte. Для этого я пытаюсь создать собственное хранилище. js, но я уже очень старался импортировать клиент узла (независимо от того, какой клиент я использую). Для «ioredis» документация гласит, что использовать его можно следующим образом:

const Redis = require("ioredis");
const redis = new Redis();

Кто-нибудь может подсказать, как его реализовать? Идея состоит в том, чтобы иметь приложение, единственная цель которого - анализировать / извлекать значения в / из базы данных REDIS с помощью методов pub / sub. Я предполагаю, что я что-то упустил с накопительным пакетом и способом, которым он обрабатывает nodejs зависимостей при компиляции, или, возможно, это вообще невозможно go таким образом?

1 Ответ

0 голосов
/ 26 апреля 2020

Хранилища должны иметь возможность работать в браузере, чтобы они не могли обмениваться данными с redis напрямую или импортировать пакеты узлов (если только импортированный пакет не является изоморфным c или не имеет эквивалента в браузере).

Вместо прямого доступа вы можете создать HTTP-сервер для обработки вызовов Redis.

Хранилище является копией удаленных данных. Каждый раз, когда клиент обновляет Redis (через конечную точку HTTP), он также должен обновлять локальное хранилище.

Что-то вроде:

export const store = writable(...)

export async function updateRedis(stuff) {
  const response = await fetch('/my-update-url', {method: 'POST', body: JSON.stringify(stuff)})
  const result = await result.json()

  // tell the store about new results, either with set() or update()
  store.set(result)
}
...