Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

191
Views
add objects to array without overwriting

I have my current code

let array = {};
          array[date] = [
            {
              Name: Name,
              Cell: Cell,
              Age: Age,
              userId: userId,
              Time: time,
              Type: type,
              read: false,
            },
          ];

that uploads to firebase like this enter image description here

but every time i add a new entry for the same date, it overwrites the existing data. I want the data to be add to map "1" etc instead of overwriting the data in map "0"

update: I have tried the following and I am receiving an error. Not sure if I did this correctly, I am still learning.

 let array = {};
          array[date] = [];
          try {
            await firebase
              .firestore()
              .collection("Notifications")
              .doc(`${helper}`)
              .update(
                {
                  array: firebase.firestore.FieldValue.arrayUnion({
                    Name: Name,
                    Cell: Cell,
                    Age: Age,
                    userId: userId,
                    Time: time,
                    Type: type,
                    read: false,
                  }),
                },

                { merge: true }
              );
          } catch (e) {
            alert(e);
            console.log(e);
          }

update with push:

 // at beginning of script
          let array = {};

          // later, when you want to add to it
          if (!array[date]) {
            array[date] = [];
          }
          array[date].push({
            Name: Name,
            Cell: Cell,
            Age: Age,
            userId: userId,
            Time: time,
            Type: type,
            read: false,
          });

    

          try {
            await firebase
              .firestore()
              .collection("Notifications")
              .doc(`${helper}`)
              .set(
                array,

                { merge: true }
              );
          } catch (e) {
            alert(e);
            console.log(e);
          }
        },

Solution:

try {
  await firebase
    .firestore()
    .collection("Notifications")
    .doc(`${helper}`)
    .update({
      [date]: firebase.firestore.FieldValue.arrayUnion({
        Name: Name,
        Cell: Cell,
        Age: Age,
        userId: userId,
        Time: time,
        Type: type,
        read: false,
      }),
    });
} catch (e) {
  alert(e);
  console.log(e);
}
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Since you set the entire 2022-01-03 field, you are overwriting any existing values in that field.

If you want to merge the new value/object you specify with the existing values in a field use the array-union operator.

about 4 years ago · Juan Pablo Isaza Report

0

Use push() to add to an array.

// at beginning of script
let array = {};

// later, when you want to add to it
if (!array[date]) {
  array[date] = [];
}
array[date].push({
  Name: Name,
  Cell: Cell,
  Age: Age,
  userId: userId,
  Time: time,
  Type: type,
  read: false,
});
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!