所以我創建了一個基本上允許我的隊友填寫和提交表單的應用程序。在原始測試中,Meteor會隨機刷新頁面(即使沒有更新依賴數據源),他們也會丟失已經在表單中輸入的信息。所以我通過讓應用程序在一個單獨的Mongo集合中生成一個臨時文檔來入侵雙向數據綁定解決方案,該集合將存儲表單數據,直到用戶完成並提交表單 - 此時,應用程序將刪除臨時文件。我還使用鐵路路由器,使用新文檔的ID動態生成唯一頁面。在Meteor應用程序中安排Mongo收集清理
我的問題是,如果用戶沒有提交或取消表單,文檔不會被刪除,我留下一堆不必要的數據。我想安排每週清理一次Meteor集合,但我不知道如何做到這一點。我不知道什麼樣的代碼是與此有關,但我已經提供了創建和刪除臨時文件的事件:
Screens = new Meteor.Collection('screens') // where forms will ultimately be stored
Forms = new Meteor.Collection('forms') // form templates
NewScreen = new Meteor.Collection('newscreen') //used for temporary data storage
//event that generates temporary object when users start new form
'click [name=new-screen]': function(e, tmpl) {
NewScreen.insert({
first: '',
role: this.position_name,
answers: [],
form_id: this._id,
position_name: this.position_name,
form_bundle: this.form_bundle,
created_at: new Date
});
//event that stores form data in the final collection, and removes the temporary storage document
'click [name=submit]': function(e, tmpl) {
e.preventDefault();
var newObj = {};
var q_elements = $('.question-form li');
var a_elements = $('textarea');
var ca_elements = $('.correct-answer');
var qa_bundle = []
for(i=0; i<q_elements.length; i++){
myObj={}
myObj['question'] = q_elements[i].innerHTML;
myObj['answer'] = a_elements[i+1].value;
myObj['correct_answer'] = ca_elements[i].innerHTML.split('</b> ')[1];
qa_bundle.push(myObj);
}
newObj['name'] = $('input')[0].value;
newObj['prescreen_notes'] = $('#prescreen-notes')[0].value;
newObj['role'] = this.position_name;
newObj['qa_bundle'] = qa_bundle;
newObj['created_at'] = new Date;
Screens.insert(newObj);
for(i=0;i<$('input').length; i++){
$('input')[i].value = '';
}
for(i=0;i<$('textarea').length; i++){
$('textarea')[i].value = '';
}
$('#new-id')[0].innerHTML = 'Link to candidate prescreen: <a href="/screens/' + Screens.find().fetch()[Screens.find().fetch().length-1]._id +'">' + Screens.find().fetch()[Screens.find().fetch().length-1]._id + '</a>';
NewScreen.remove({_id: window.location.pathname.split('/')[window.location.pathname.split('/').length-1]})
},
如果有幫助,我已經提交了該應用程序的版本是,「流星構建「命令吐出來使它成爲一個node.js應用程序,以github回購這裏:https://github.com/gharezlak/prescreens
謝謝你的回答!我會試試這個以及其他一些建議的解決方案,並查看哪一個最適合。 –