UnhandledPromiseRejectionWarning: BulkWriteError: E11000 重复键错误集合 - MongoDB

时间:2021-04-30 04:29:31

标签: javascript node.js reactjs mongodb express

快速提问。我有一些 JSON 传入,我将其发送到 MongoDB 集合。因为我需要不断地将来自 API 的新数据发送到数据库,所以我将 fetch 包裹在 setInterval 中。

现在的问题是,我只需要将新的和唯一的文档发送到数据库(数据库中不存在的那些,以避免重复)。它在数据库端工作,它只是将唯一性推送到集合中,但在我的终端(节点 js)中,我收到了上述(标题)错误。如果我是对的,这意味着我因为传入的 ID 已经存在而大喊大叫,但我不确定为什么我一直在终端中收到错误消息。

这是我的代码:

// SEND ALL INCOMING QUAKES TO DATABASE FOR ARCHIVING:
const every_ten_mins = 600000;

setInterval(() => {         
    // GET ALL EARTHQUAKES
    fetch('https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.geojson')

    .then(resp => resp.json())

    .then((json) => {
        console.log(json);

        // PUSH UNIQUE QUAKES TO DATABASE
        const eq_collection = db.collection('earthquake_tracker');

        json.features.forEach((el, idx) => {

            // SET AN INDEX FOR THE 'ID' FIELD SO THAT IT CAN BE UNIQUE
            eq_collection.createIndex({id: 1}, {unique: true})      
            try {
                eq_collection.insertMany(json.features); // INSERT ONLY UNIQUE QUAKES
            } catch(e) {
                console.log(e);
            }
        });

    })
    .catch(err => console.log(err));        

}, every_ten_mins);

我在正确的轨道上吗?如果没有,我做错了什么?我只想根据setInterval不断将新文档(唯一)推送到数据库中。提前感谢您的帮助!

0 个答案:

没有答案