gpt4 book ai didi

javascript - Algolia 重复

转载 作者:行者123 更新时间:2023-11-30 07:54:02 28 4
gpt4 key购买 nike

我在让 Algolia 正常工作时遇到了一些麻烦。我正在使用 NodeJS 并尝试在我的数据库和 Algolia 之间进行一些同步,但由于某种原因似乎随机弹出大量重复项。

enter image description here

如您所见,在某些情况下,会弹出两个不同的条目,它们的数据完全不同,主题名称除外。我没有在其他任何地方运行 add-to-algolia 代码,并且 UUID 已关闭,因为我输入的条目前面有“topic-”。

function loadNewTweets(){
console.log("Checking...");
var tweets;
var topics;
var referenceTopics;
Promise.all([
//stuff
])
.then(function(data){

topics = [
//data
]

return Promise.each(topics, function(topic, index){
return new Promise(function(res,rej){
Promise.all([
//things
])
.then(function(r){
var id = 'topic-'+uuid.v4();

if(!topicDB){
var obj = {
//data
}
console.log("Adding", topic.topic, "to topic DB + Algolia");
return new Promise(function(res,rej){
var dbInstance;
Database.models.Topic.create(obj)
.then(function(topic){
dbInstance = topic;
return Search.addData('topics', [dbInstance])
})
.then(function(content){
dbInstance.algoliaId = content.objectIDs[0];
return dbInstance.save(['algoliaId']);
})
.then(function(){
return res();
})
})
}
})
.then(function(){
return res();
})
})

})
})
.then(function(){
return Database.models.Topic.findAll({})
})
.then(function(topicsDB){
//If a topic is in the database, but not the topics array.

//Loop through each database entry.
Promise.each(topicsDB, function(topic){
var del = true;

//Go through topics array
for(var i=0;i<topics.length;i++){

//If a topic in the array matches a database entry, dont remove it.
if(topics[i].topic == topic.topic){
del = false;
}
}

//If no entry was found in the array for this topic in the database, remove it from the database and Algolia.
if(del){
console.log("Deleting", topic.topic, "from topic DB + Algolia", topic.algoliaId);
Search.delete('topics', [topic.algoliaId])
.then(function(){
topic.destroy();
})
}
})
})
}

我缺少某种选择吗?任何帮助将不胜感激。

编辑:副本和原件之间似乎存在某种关系,但我仍然无法弄清楚是什么原因造成的。

enter image description here

(原谅吧)

最佳答案

存在重复项,因为您没有使用 [objectID][1] 来唯一标识您的记录。通常主键作为 objectID 可以正常工作。如果您不指定一个,Algolia 将自动分配一个,这意味着很难没有重复项。

{
name: 'some name',
objectID: 'the id of the data in my database'
}

文档中有示例:https://www.algolia.com/doc/api-reference/api-methods/save-objects/#examples

关于javascript - Algolia 重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45071684/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com