2015-02-07 3 views
0

Можно ли изменить запись с помощью помощников?Изменение записей с помощью помощников

Пример: (_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> 

Спасибо!

ответ

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

Спасибо, он отлично работает. Я разместил код внутри моего помощника. Это лучшее место для размещения этого кода или есть лучший? –

+0

Все зависит от того, сколько вы хотите повторно использовать это конкретное преобразование. Если это имеет смысл только для этого конкретного помощника, вы можете разместить целую вещь в помощнике, как вы предложили. –

0
var recordsArray = Records.find({age:"20"}).fetch(); 
recordArray.forEach(function (entry) { 
entry.video = "stack.com/link.jpg"; 
} 

return recordsArray; 

* Обратите внимание, это не будет обновлять коллекции video. Он изменит только video для массива;

Смежные вопросы