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

Сейчас я экспериментирую с Algolia. Пока это действительно впечатляет. Однако я наткнулся на «преграду».

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

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

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

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


person Azirius    schedule 30.07.2018    source источник


Ответы (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;
});

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

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

person Azirius    schedule 06.08.2018