シナリオフックinsert`:コールMeteor.call()と前に `内部で待つ:
を私は日付が衝突しないだけautoform
を使用してクライアントのAppointment
を挿入しようとしています。以下は簡単なアイディアを得るためのコードです。
{{#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'を使用しても)パフォーマンス面で実現可能な解決策ではありません。フックでそれをチェックすると、サーバーへの呼び出しが1回だけで、アプリケーションのニーズに合っています。 –
@AnkurSoniユーザーが既にフィールドにデータを入力しているときに、「一貫してチェックする」という意味ではありませんでした。もちろん、それは意味がありません、もしあなたが衝突をチェックするために_all_フィールドが必要なら:) – Styx