如何解决React Algolia搜索未找到任何结果
我正在尝试在react hooks中实现algolia。我已经创建了索引并分配了可搜索的属性。
我的可搜索属性是index.customerFirstName和index.customerLastName。我没有设置自定义搜索排名。
索引记录如下:
{
"indexData": {
"customerFirstName": "Ivor","customerLastName": "Cutler"
},"objectID": "xxxxxxxxxxxxxxxxxxxxxx"
}
使用useState初始化变量:
const [ searchClient,setSearchClient ] = useState(null);
const [ search,setSearch ] = useState('');
const [ searchIndex,setSearchIndex ] = useState();
我的useEffect等待登录Firebase以获取记录,然后将搜索客户端设置为访问algolia索引。如果成功,则应填充变量searchClient,这似乎可行,因为当useEffect检测到更改时,它将记录searchClient。
useEffect (() => {
firebase.auth().onAuthStateChanged((user) => {
if (user && !searchClient) {
setSearchClient(
algoliasearch(
process.env.REACT_APP_ALGOLIA_APP_ID,process.env.REACT_APP_ALGOLIA_SEARCH_KEY
)
)
}
});
if (searchClient !== null && !searchIndex) {
setSearchIndex(
searchClient.initIndex('Sessions')
);
console.log("SEARCH CLIENT",searchClient)
}
if (searchIndex && search) {
console.log('SEARCH INDEX: ',searchIndex,search);
getHits();
}
},[search,searchClient,sessions,sessionData,showSessionData])
当搜索(查询)的值更改时,将调用gethits()函数:
const getHits = () => {
searchIndex.search(
search
).then(console.log)
}
但是我的匹配数组始终为空。我的索引中的数据具有正确的字段吗?有什么作用?
正在搜索某些内容,因为搜索查询出现在命中JSON中?
解决方法
好吧,一旦我重新生成API SEARCH KEY,就可以了!对于已经设法正确索引Algolia并使用React Hooks的任何人,此方法都可能比InstantSearch React组件提供更多的即时灵活性,而且我看不到有人发布了基本的React Hooks搜索algolia索引的方法。
无需等待Firebase,因此可以在useEffect中使用:
if (!searchClient) {
setSearchClient(
algoliasearch(
process.env.REACT_APP_ALGOLIA_APP_ID,process.env.REACT_APP_ALGOLIA_SEARCH_KEY
)
)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。