Ich habe eine Meteor-Methode, die versucht, die Datenbank zu manipulieren, und bei Erfolg ruft eine asynchrone Methode auf. Ich möchte in der Lage sein, diese Methode aufzurufen und das Ergebnis des Async-Aufrufs oder des Fehlers von der Datenbankmanipulation zurückzugeben.Meteor, Verkettung Methodenaufrufe
Dies ist (grob) mein Code auf dem Server:
Meteor.methods({
'data.update'(id, data) {
Collection.update({id_: id}, {$set: {data: data}}, error => {
if (error) {
// Have method return Meteor error for DB-failure
} else {
callAsync(id, (error, res) => {
if (error) {
// Have method return Meteor error for async call failure
} else {
// Have method return success(res)
}
})
}
})
}
});
Ich habe über Futures und Versprechungen zu lesen, aber ich bin neu in die Konzepte und ich bin nicht sicher, wann was zu verwenden. Vorzugsweise suche ich nach einer Lösung, die nicht auf externen Bibliotheken außerhalb von Meteor/ES6 beruht. Frage zum Bonus (verwandt): Was wird normalerweise nach einer Datenbankmanipulation zurückgegeben, die mir einen Rückruf an eine Methode anhängen lässt?
Es gibt keinen Unterschied zwischen Futures und Versprechen (neben der Terminologie)? Obwohl wir sie in JS "Versprechungen" nennen, und ja, sollten Sie eine zurückgeben. – Bergi
Wie gesagt, ich bin neu in den Konzepten. Ich weiß, dass sie in Scala anders sind, aber verwandte Konzepte und Wikipedia sagt "Futures und Versprechungen entstanden in funktionaler Programmierung und verwandten Paradigmen (wie Logikprogrammierung), um einen Wert (eine Zukunft) von seiner Berechnung zu entkoppeln (ein Versprechen) ". Ein großer Unterschied zwischen Futures und Versprechungen in JS ist, dass Sie nur eine sinnvolle Suche nach Google durchführen können;). – Reason
Ja, [Terminologie] (http://StackOverflow.com/q/29268569/1048572) ist ein bisschen komisch in JS. Wir sprechen von Aufträgen und Versprechen anstelle von Versprechen und Termingeschäften, und die Aufschubszahlungen werden ohnehin zugunsten von reinen Rückrufen eingestellt. – Bergi