add to set creating duplicate entry in mongodb from mongoose

Viewed 3

1.I'm trying to create a create a unique document with date as a id. 2.But when I try to insert new objects in datedata array it creates duplicate entry even I had use addtoset. 3.Mine getbankNiftydata function runs every 20 sec and every time it creates duplicate entry in my datedata array.

import mongoose from "mongoose";
import fetch from "node-fetch";
import * as dotenv from "dotenv";
dotenv.config();

mongoose.connect(process.env.CONNECTION_URL);

const DateSchema = mongoose.Schema({
  time: {
    type: String,
    required: true,
    unique: true,
  },
  data: {
    type: Array,
    required: true,
  },
});

const bankNiftySchema = mongoose.Schema({
  _id: {
    type: String,
    required: true,
  },
  datedata: [
    {
      type: DateSchema,
      required: true,
      unique: true,
    },
  ],
});
const bankNiftyoption = mongoose.model("test bank", bankNiftySchema);

export async function getbankNiftyData() {
  const res = await fetch("http://localhost:5000/api/banknifty");
  const response = await res.json();
  const data = response.filtered?.data;
  const date = response?.records?.timestamp.split(" ");

  try {
    const result = await bankNiftyoption({
      _id: date[0],
    });
    await result.save();
  } catch (error) {
    console.log(error);
  }

  try {
    await bankNiftyoption.findOneAndUpdate(
      { _id: date[0] },
               
            

                    
      {
        $addToSet: {
          datedata: { time: response?.records?.timestamp, data: [] },
        },
      }
    );
  } catch (error) {**strong text**
    console.log(error);
  }
}
0 Answers
Related