0

问题是我可以从 useEffect 钩子中控制台记录数组,但是当我去访问它时,它返回一个空数组。

我正在尝试将数据上传到我的 Algolia 索引。

这是当前的useEffect

  useEffect(() => {
    const fetchListings = () => {
      api
        .listNasdaq()
        .then((response) => {
          setListings(response.data);
          console.log(response); //I can see the array of data here.
        })
        .catch((error) => {
          console.log(error);
        });
    };
    fetchListings();
  }, []);

api.js:

listNasdaq: () =>
    exchangeApi({
      method: "GET",
      url: "/companies/list-by-exchange",

      transformResponse: [
        function (data) {
          // Do whatever you want to transform the data
          console.log("Transforming Nasdaq Data...");

          const json = JSON.parse(data);

          const stocks = Object.keys(json["results"]);

          const stockNames = stocks.map(
            (stock) =>
              (stock = {
                stock,
                stockName: String(json["results"][stock]["companyName"]),
                symbol: String(json["results"][stock]["symbol"]),
                industry: String(json["results"][stock]["industryOrCategory"]),
              })
          );

          data = {
            stockNames,
          };

          return data;
        },
      ],
    }),

阿尔及利亚:

  nasdaqIndex
    .saveObjects(listings, {
      autoGenerateObjectIDIfNotExist: true,
    })
    .then(({ objectIDs }) => {
      console.log("algolia stuff", objectIDs);
    });
4

1 回答 1

0

我对你的地图功能有点困惑。您是否将完整的库存对象注入自身((stock = { stock, ...)?当你记录它时,最终的stock对象是什么样子的?我担心你去保存记录时可能会让 Algolia 感到困惑。

          const stockNames = stocks.map(
            (stock) =>
              (stock = {
                stock,
                stockName: String(json["results"][stock]["companyName"]),
                symbol: String(json["results"][stock]["symbol"]),
                industry: String(json["results"][stock]["industryOrCategory"]),
              })
          );

另外,我假设调用nasdaqIndex.saveObjects()发生在setListings()?看起来这里可能缺少某些代码。

于 2022-03-01T15:19:09.250 回答