Szenario Haken:Anruf Meteor.call() und warten innen `vor: insert`
Ich versuche, eine Appointment
für einen Kunden einfügen nur mit autoform
wenn die Termine kollidieren nicht. Unten ist der Code um eine kurze Idee zu bekommen.
{{#autoForm id='insertAppointmentForm' collection=appointment type="insert"
doc=this validation="browser"}}
<fieldset>
<!-- All fields here -->
</fieldset>
<button type="submit" class="btnn"> Create </button>
{{/autoForm}}
I Haken wie unten oben Autoform insert
Code ist Hinzufügen
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);
Problem:
Das Problem hier ist, dass Form selbst abgegeben wird, wenn error
von Meteor.call()
und Einsätzen zurück die document
zur Datenbank. Ich weiß, dass der Meteor.call()
asynchronen Anruf ist, aber wie kann ich auf das Ergebnis warten? nur dann möchte ich mit submit fortfahren, wenn kein fehler auftritt.
Überprüfung der Kollision auf "Benutzer eingegebene Daten" ist nicht eine machbare Lösung in Bezug auf die Leistung (auch wenn ich '_.debounce', um Anfragen zu steuern). Wenn Sie es auf Anhieb prüfen, wird nur ein Anruf an den Server gesendet, der den Anforderungen meiner Anwendung entspricht. –
@AnkurSoni Ich meine nicht "kontinuierlich prüfen", nur einmal, wenn der Benutzer bereits Daten in das Feld eingegeben hat. Natürlich wäre das bedeutungslos, wenn Sie _alle_ Felder benötigen, um nach dem Konflikt zu suchen :) – Styx