如何使用多个输入字段和单个更新按钮更新Meteor中的文档

时间:2016-01-24 21:24:41

标签: javascript mongodb meteor

我有一个弹出的模态,让用户更新集合中的某些字段。例如,它将为客户端的地址提供多个输入字段(模式只有一个按钮来执行更新):

...
<input type="text" id="full-name-change-modal">
<input type="text" id="address-change-modal">
<input type="text" id="city-change-modal">
<input type="text" id="state-change-modal">
...

因此,如果用户想要更改客户端的全名,则更新将仅包括那些适当输入不为空的字段。在这种情况下,更新将读取如下内容:

Collection.update({ _id: documentNameAddress._id}, {$set: {FullName: <name from input> }});

如果用户想要更改地址,城市,州和邮政编码,则需要阅读:

Demographic.update({ _id: documentNameAddress._id}, {$set: {Address: <address from input>, City: <city from input>, State: <state from input>, Zip: <zip from input> });

如果可能,我不希望每个字段都有单独的按钮。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您最终会获得Collection的一个可选更新,然后您可以根据表单中的非空字段为Demographic建立更新:

Template.myTemplate.events({
  'click button':function(ev){

    var FullName = $("#full-name-change-modal").val();
    if ( FullName ) Collection.update({ _id: documentNameAddress._id}, {$set: {FullName: FullName }});

    var query = {};
    var Address = $('#address-change-modal').val();
    if ( Address ) query.Address = Address;
    var City = $('#city-change-modal').val();
    if ( City) query.City = City;
    var State = $('#state-change-modal').val();
    if ( State ) query.State = State;
    if ( Object.keys(query).length ) Demographic.update(query);
  }
});