Meteorjs使用输入选择多个并推送到集合

时间:2016-09-02 16:09:21

标签: javascript mongodb 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]
 }
});

这是输入的选择

<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>

使用此表单我想在现有的Cliente.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
                }});
            }
        }
    }
});

但不起作用。我该如何解决?

1 个答案:

答案 0 :(得分:0)

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

我会尝试:

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 }});