Meteor 重构流星更新片段

Meteor 重构流星更新片段,meteor,Meteor,我有这段代码 Requestor.update({ _id: theid }, {$set: { "reqestmadebyid": doc.reqestmadebyid, "requestschoolid": doc.requestschoolid, "requestmadebynames": doc.requestmadebynames, "requestmadeon": doc.request

我有这段代码

         Requestor.update({ _id: theid }, {$set: {
          "reqestmadebyid": doc.reqestmadebyid,
          "requestschoolid": doc.requestschoolid,
          "requestmadebynames": doc.requestmadebynames,
          "requestmadeon": doc.requestmadeon,
          "requesttype": doc.requesttype,
          "requestdescription": doc.requestdescription,
          "requestparameter1": doc.requestparameter1,
          "requestparameter2" : doc.requestparameter2,
          "requestparameter3" : doc.requestparameter3,
          "requestparameter4" : doc.requestparameter4,
          "requestparameter5" : doc.requestparameter5,
          "requestparameter6" : doc.requestparameter6,
          "requestparameter7" : doc.requestparameter7,
          "requeststatus" : doc.requeststatus,
          "requestdenialexplanation" : doc.requestdenialexplanation
             }
             });

我正在使用它更新表单。有没有一种方法可以像我们在插入时那样使它变小?

不能说它变小了,但它更容易维护

var fields = [
'reqestmadebyid', 
'requestschoolid', 
'requestmadebynames', 
'requestmadeon', 
'requesttype', 
'requestdescription', 
'requestparameter1', 
'requestparameter2', 
'requestparameter3', 
'requestparameter4', 
'requestparameter5', 
'requestparameter6', 
'requestparameter7', 
'requeststatus', 
'requestdenialexplanation'
];

var updateSet = fields.reduce(function(data, field) {
  return data[field] = doc[field];
}, {});

Requestor.update({ _id: theid }, {$set: updateSet});
使用lodash npm包的更紧凑示例:

var fields = [
'reqestmadebyid', 
'requestschoolid', 
'requestmadebynames', 
'requestmadeon', 
'requesttype', 
'requestdescription', 
'requestparameter1', 
'requestparameter2', 
'requestparameter3', 
'requestparameter4', 
'requestparameter5', 
'requestparameter6', 
'requestparameter7', 
'requeststatus', 
'requestdenialexplanation'
];

Requestor.update({ _id: theid }, {$set: _.pick(doc, fields)});

这是一些聪明的代码。我默默地希望meteor有一种缩短它的方法。让你微笑的东西,大家都欢呼这个明显的@LeQs队长如果你想更新
doc
对象包含的每个属性,你只需编写
Requestor.update({u id:theid},{$set:doc})
@LeQs,或者,如果您几乎需要所有属性,您可以编写(使用lodash):
var省略=['a','b'];update({u id:theid},{$set:{.omit(doc,省略)})