在檔案中,沒有明確定義 ObjectID 的示例。我不想使用 autoGenerateObjectIDIfNotExist它,因為它在索引中復制了我的物件。我也不想replaceAllObjects每次都使用 as 創建越來越多的索引。
我正在使用useEffect從 MongoDB 中提取 API。如何通過附加自定義 ObjectID 來定義 ObjectID?通過一個for回圈?
作為參考,這是一個 MERN 應用程式。
如果未定義 ObjectID,則會彈出此錯誤:
“所有物件都必須具有唯一的 objectID(如主鍵)才能有效。Algolia 也能夠自動生成 objectID,但 不建議這樣做。要做到這一點,請使用該
{'autoGenerateObjectIDIfNotExist': true}選項。”
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);
});
uj5u.com熱心網友回復:
一旦你回來了data。您可以forEach通過陣列運行 a 并將_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從后端本身設定并發送到前端。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/422856.html
標籤:
