如何为 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
并发送到前端。
在文档中,没有明确定义 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
并发送到前端。