Algolia vue-instantsearch - удаление результата

В настоящее время я экспериментирую с Алголией. Это действительно впечатляет. Однако я наткнулся на "контрольно-пропускной пункт".

Я использую vue-instantsearch пакет. В настоящее время он используется только на странице администрирования. На этой странице я могу нажать кнопку, чтобы вызвать модальное окно, которое подтверждает, следует ли его удалить. Я пытаюсь найти способ "просто" удалить указанную статью из результатов без перезагрузки.

Я по сути изучил документацию и нашел deleteObjects метод, но он не доступен изнутри ais-index компонент, ни какие-либо из его дочерних компонентов.

Итак, мой вопрос на самом деле: как бы я правильно реализовал это?

Любая помощь в этом вопросе будет принята с благодарностью:)

1 ответ

Решение

Хорошо, похоже, я решил свою проблему.

Вот как я это исправил.

Во-первых, я создал свой собственный экземпляр searchStore

const searchStore = createFromAlgoliaCredentials(
    'APP_ID',
    'SEARCH_KEY'
);

Создав поисковый магазин, я передал его ais-index Vue компонент, через :search-store двигательный

Это работает как нормальный vue-instantsearch составная часть.

Чтобы удалить "вещь" из результатов, мне пришлось пройтись по поисковому хранилищу и удалить результат. В хранилище поиска есть два объекта результатов. Мне нужен был префикс с подчеркиванием, доступный через this.store._results (this относится к компоненту Vue, который имеет доступ к поисковому хранилищу).

Полный код для удаления результата:

this.store._results = this.store._results.filter(loopedArticle => {
    return loopedArticle.objectID !== article.objectID;
});

Может быть неправильно использовать поисковый магазин таким образом и обращаться к "частному" свойству таким способом, но это единственный способ, которым я мог заставить его работать.

Надеюсь, что это поможет любому, кто нуждается в этой функции!

Другие вопросы по тегам