【问题标题】:Modifying records with helpers使用助手修改记录
【发布时间】:2015-02-08 04:13:33
【问题描述】:

是否可以使用助手修改记录?

示例:(_id:“CbQvD52iEFXnFML3d”,名称:“somename”,年龄:“20”,视频:“stack.com/link.mp4”)。 我想在将找到的所有记录发送到模板之前对其进行修改。

Records= new Meteor.Collection('records');

Template.test.helpers({
  record: function() {
    var info = Records.find({age:"20"});
    //modify all records found from "stack.com/link.mp4" to "stack.com/link.jpg"
    return collection with modified records
  }
});
<template name="test">
  {{#each record}}
    {{name}}
    <img src="{{video}}">
  {{/each}}
</template>

谢谢!

【问题讨论】:

    标签: meteor


    【解决方案1】:

    是的。您可以对特定的find 或整个collection 应用转换。在此示例中,我们将仅将转换添加到 find 帮助器中使用的 record

    var transform = function(doc) {
      doc.video.replace(/mp4$/, 'jpg');
      return doc;
    };
    
    Template.test.helpers({
      record: function() {
        return Records.find({age: '20'}, {transform: transform});
      }
    });
    

    【讨论】:

    • 谢谢,它工作得很好。我将代码放在我的助手中。这是放置该代码的最佳位置还是有更好的位置?
    • 这完全取决于您希望重用该特定转换的程度。如果它只对那个特定的助手有意义,你可以按照你的建议把整个东西放在助手中。
    【解决方案2】:
    var recordsArray = Records.find({age:"20"}).fetch();
    recordArray.forEach( function (entry) {
     entry.video = "stack.com/link.jpg";
    }
    
    return recordsArray;
    

    *注意这不会更新集合video。它只会更改数组的video

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 2017-06-03
      相关资源
      最近更新 更多