2

我正在尝试在 React native 中实现 meilisearch api,它在我的模拟器上运行良好,在我发布应用程序后,一些用户看不到从 meilisearch 返回的数据,错误是

{"name":"Invariant Violation","framesToPop":1} 

这是我的代码

美利搜索.js

import axios from 'axios';

import { meilisearchConfig } from '../Config';

const MeilisearchApi = async (payload, success, failed) => {
  try {
    const response = await axios({
      method: 'post',
      url: `${meilisearchConfig?.host}indexes/activities/search`,
      data: payload,
      headers: {
        'X-Meili-API-Key': meilisearchConfig?.apiKey,
      },
    });
    success?.(response?.data);
  } catch (err) {
    failed?.(err);
  }
};

export default MeilisearchApi;

这是返回数据的规范器

import moment from 'moment';
import { IActivity, IByDateGroupFilter } from 'reducers/types';

export const activityNormalizer = (state, { hits, offset }) => {
  const {
    melisearchActivityData: { byDate, dates, all },
  } = state;
  const isRefreshing = offset === 0;

  const newAll = isRefreshing ? hits : [...all, ...hits];
  const datesNew: string[] = isRefreshing ? [] : dates;
  const byDateNew: any = isRefreshing ? {} : byDate;
  const byDateGroup: IByDateGroupFilter[] = [];

  hits.forEach((activity: IActivity) => {
    const date = getFormattedDate(activity.created_at);

    if (byDateNew[date]) byDateNew[date].push({ ...activity });
    else {
      byDateNew[date] = [{ ...activity }];
      datesNew.push(date);
    }
  });

  Object.keys(byDateNew).forEach((key) => {
    byDateGroup.push({
      title: key,
      data: byDateNew[key],
    });
  });

  return {
    dates: datesNew,
    byDate: byDateNew,
    byDateGroup,
    all: newAll,
  };
};

这就是我调用 Meil​​isearch API 方法的方式

MeilisearchApi(
      {
        q: search,
        filters: filters,
        offset: newOffset,
        limit: PAGE_SIZE,
      },
      ({ hits }: { hits: any[] }) => {
        setDataLoaded(true);
        setMelisearchActivitiesToRedux({ hits, offset: newOffset });
        if (newOffset === 0) {
          sectionList?.current?.scrollToLocation({
            itemIndex: 1,
          });
        }
      },
      (err: any) => {
        setDataLoaded(true);
        log(err)
      },
    );

不知道这个错误是如何发生的,当用户杀死应用程序并再次登录时,这工作正常

4

0 回答 0