如何为 Algolia 定义、附加或映射 objectID 到数组?

How to define, append or map objectID to an array for Algolia?

在文档中,没有明确定义 ObjectID 的示例。我不想使用 autoGenerateObjectIDIfNotExist,因为它会在索引中复制我的对象。我也不想使用 replaceAllObjects 因为每次都会创建越来越多的索引。

我正在使用 useEffect 从 MongoDB 中提取 API。如何通过附加自定义 ObjectID 来定义 ObjectID?通过for循环?

作为参考,这是针对 MERN 应用程序的。

如果未定义 ObjectID,则会弹出此错误:

"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but it's not recommended. To do it, use the {'autoGenerateObjectIDIfNotExist': true} option."


useEffect(() => {

    const config = {

      headers: {

        Authorization: `Bearer ${userInfo.token}`,

      },

    };

    const fetchPasswords = async () => {

      const { data } = await axios.get("/api/passwords", config);

      setPasswords(data);

    };

    fetchPasswords();

  }, []);
index

    .saveObjects(passwords, {

      objectIDs: passwords._id,

    })

    .then(({ objectIDs }) => {

      console.log(objectIDs);

    });

一旦你回来data。您可以通过数组 运行 forEach 并将 _id 字段替换为 objectID 字段。之后setPasswords(data)
对于这样的例子

const data = [
{
_id: 1,
password: 'password1'
},{
_id: 2,
password: 'password2'
},{
_id: 3,
password: 'password3'
}
]

data.forEach((password) => {
    password.objectID = password._id;
  delete password._id;
})

console.log(data);
.as-console-wrapper { max-height: 100% !important; top: 0; }

      const { data } = await axios.get("/api/passwords", config);
      //run the forEach for data.....
      setPasswords(data);

现在每条记录都有一个 objectID 您可以像

这样的通常方式为您的数据编制索引
index.saveObjects(passwords).then(({ objectIDs }) => {
  console.log(objectIDs);
});

您可以这样做,也可以从后端本身设置 objectID 并发送到前端。