Push object in array? help me please


#1

hi every body! i’m new in meteor and mongo i’d like push one object in an array that is content in an other array. I’d like push giorni to cantieri. But I’d like push giorni in one specific cantieri. how can I make it? this my schema’s collections

Clienti.Giorni = new SimpleSchema({
  giorno: {
    type: Date,
    label: "giorno del lavoro"
  },
  oraPartenza: {
    type: Date,
    label: 'Giorno e ora partenza',
  },
  oraInizio: {
    type: Date,
    label: 'Giorno e ora inizio',
    optional: true
  },
  oraFine: {
    type: Date,
    label: 'Giorno e ora fine',
    optional: true
  },
  dipendenti: {
    type: [Dipendenti]
  }
});

Clienti.Cantieri = new SimpleSchema({
  _id:{
    type: String,
    autoValue: function(){
      var id = new Meteor.Collection.ObjectID();
      return id._str
    }
  },
  nome: {
    type: String
  },
  luogo: {
    type: String
  },
  inizio: {
    type: Date
  },
  scadenza: {
    type: Date
  },
  inCorso: {
    type: Boolean,
    defaultValue: false
  },
  createdAt: {
    type: Date,
    label: "Creato il",
    autoValue: function() {
      return new Date()
    }
  },
    giorni: {
    type: [Clienti.Giorni],
    optional: true,
    autoform: {
      type: "hidden"
    }
  }
});


Clienti.ClienteSchema = new SimpleSchema({
  nome: {
    type: String,
    label: "nome"
  },
  iva: {
    type: String,
    label: "Partita iva",
    max: 16
  },
  referente: {
    type: String,
    label: "Nome persona di rifermento"
  },
  email: {
    type: String,
    label: "email"
  },
  indirizzo:{
    type:String,
    label: 'Indirizzo'
  },
  createdAt: {
    type: Date,
    label: "Creato il",
    autoValue: function() {
      return new Date()
    },
    autoform: {
      type: "hidden"
    }
  },
  cantieri: {
    type: [Clienti.Cantieri],
    optional: true,
    autoform: {
      type: "hidden"
    }
  }
});


Clienti.attachSchema( Clienti.ClienteSchema );

#2

Clienti.update({_id: idOfDocYouWantToUpdate}, { $addToSet: { 'cantieri.giorni': giorniDocYouWantToInsert }} );


#3

it’s a nested array how can I select cantieri to add giorni?
here i must put _id of cantieri? _id: idOfDocYouWantToUpdate


#4

I’m trying this solution


Clienti.update({ _id: id, "cantieri._id": idC },{ $push: { 
            "cantieri.giorni": doc}
        });

but the console log not return nothing but the document is not updated.
i’m trying, too

let nuovoGiorno = {
          giorno: new Date($('[name=giorno]').val()),
          oraPartenza:new Date($('[name=oraPartenza]').val()),
          dipendenti: [],
      }
Clienti.update({ _id: id, "cantieri._id": idC },{ $addToSet: { 
            "cantieri.giorni": nuovoGiorno}
        });