0

我目前正在尝试使用 Algolia。到目前为止真的令人印象深刻。但是,我遇到了一些“障碍”。

我正在使用该vue-instantsearch软件包。它目前仅在管理页面上使用。在这个页面上,我可以单击一个按钮来调出一个模态框,它确认是否应该删除它。我正在努力寻找一种方法来“简单地”从结果中删除指定的文章,而无需重新加载。

我基本上浏览了文档并找到了deleteObjects方法,但它不能从ais-index组件内部访问,也不能从它的任何子组件访问。

所以,我的问题真的是,我将如何正确实现这一点?

任何有关此事的帮助将不胜感激:)

4

1 回答 1

0

好的,我似乎已经解决了我自己的问题。

这是我修复它的方法。

首先,我创建了自己的实例searchStore

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

实例化搜索存储后,我通过prop将它传递给ais-indexVue 组件。:search-store

这就像一个普通的vue-instantsearch组件。

要从结果中删除“东西”,我必须遍历搜索存储并删除结果。搜索存储中有两个结果对象。我需要的是带有下划线前缀的那个,它可以通过this.store._results(this指的是 Vue 组件,它可以访问搜索存储)。

删除结果的完整代码:

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

以这种方式使用搜索存储并以这种方式访问​​“私有”属性可能是不合适的,但这是我让它工作的唯一方法。

希望这可以帮助其他需要此功能的人!

于 2018-08-06T11:49:50.517 回答