1
場景:呼叫Meteor.call()和wait裏面`前:insert`掛鉤
我試圖插入一個Appointment
使用autoform
只有當日期不衝突的客戶端。下面是獲取簡要想法的代碼。
{{#autoForm id='insertAppointmentForm' collection=appointment type="insert"
doc=this validation="browser"}}
<fieldset>
<!-- All fields here -->
</fieldset>
<button type="submit" class="btnn"> Create </button>
{{/autoForm}}
我加入鉤上面自動窗體如下insert
代碼,
var hooksObject = {
before: {
insert: function(doc) {
console.log(doc);
Meteor.call('checkAppointmentClash', doc, function(error, response){
if(error){ } else { }
});
return doc; // I want to wait here
}
},
onSuccess: function(formType, result) {},
onError: function(formType, error) {}
};
AutoForm.addHooks(['insertAppointmentForm'], hooksObject, true);
問題:
這裏的問題是,表單被提交即使error
從Meteor.call()
和插入返回到數據庫的document
。我知道Meteor.call()
是異步調用,但我如何等待結果呢?只有這樣我才能繼續提交,如果沒有錯誤。
檢查「用戶輸入數據」的衝突在性能方面沒有可行的解決方案(即使我使用'_.debounce'來控制請求)。在鉤子上檢查它只需調用一次服務器,它適合我的應用程序需求。 –
@AnkurSoni當用戶已經在現場輸入數據時,我並不是指「連續檢查」,只是一次。當然,如果你需要_all_字段來檢查衝突,那就沒有意義了:) – Styx