Meteorjs使用输入选择多个和推入集合

Meteorjs use input select multiple and push to collections

本文关键字:集合 输入 选择 Meteorjs      更新时间:2023-09-26

大家好,这是我在meteor js中的第一个项目。我使用的是Meteor 1.4.1.1和这个包:

aldeed:collection2               2.10.0

我的集合中有这个字段

Clienti.ClienteSchema = new SimpleSchema({
cantieri: {
        type: [Clienti.Cantieri],
        optional: true,
        autoform: {
            type: "hidden"
        }
}
});
Clienti.Cantieri = new SimpleSchema({
    giorni: {
        type: [Clienti.Giorni],
        optional: true,
        autoform: {
            type: "hidden"
        }
    }
});
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]
 }
});

这是输入的select

<div class="col-xs-12">
    <div class="form-group">
        <label class="checkbox" for=dipendenti>dipendenti</label>
        <select multiple name="dipendenti">
            {{#each Dipendenti}}
                <option value="{{_id}}">{{nome}}  {{cognome}}</option>
            {{/each}}
        </select>
    </div>
</div>

使用此表单,我想提交现有client .cantiere中的最后一个字段Giorni。

我试着:

Template.nuovoGiorno.events({
    'submit #Giorno'(event) {
        event.preventDefault();
        const id = FlowRouter.getParam('id');
        const target = event.target;
        const giorno = target.giorno.value;
        const oraPartenza = target.oraPartenza.value;
        let select = target.dipendenti.options;
        let selezionati=[];
        for (var i = 0; i < select.length; i++) {
            var option = select[i];
            if (option.selected){
                console.log(id);
                console.log('opzione  ' + option.value);
                Clienti.update({_id:id}, {$set:{
                'cantieri.giorni.giorno': giorno,
                'cantieri.giorni.oraPartenza': oraPartenza,
                'cantieri.giorni.dipendenti._id': option.value
                }});
            }
        }
    }
});

但不工作。我该怎么修理它?

看起来你的cantieri键是一个对象数组,它本身是对象数组。这真是你想要的吗?

I would try:

Clienti.update({ _id: id }, { $set: {
  cantieri: [{
    giorni: [{
      giorno: giorno,
      oraPartenza: oraPartenza,
      dipendenti._id: option.value
    }]
  }]
}});

如果您想将giorni推入特定的cantieri(根据您的评论),然后在查询中选择您想要的cantieri,然后将新的giorni推入其中:

Clienti.update({ _id: id, cantieri: myCantieri }, { $push: { 'cantieri.giorni': newGiorni }});