Ich habe mich in den letzten 3 Tagen von einer Wand getroffen.Verketten von Wasserlinienanrufen mit Promises
Ich benutze sailsjs & die Wasserlinie ORM, die gebündelt kommt. Ich möchte DB-Anrufe nacheinander ausführen. Ich weiß, dass ich das tun kann, indem ich in "dann" Anrufe niste, aber es sieht einfach falsch aus.
Ich habe über die Q-Dokumentation gegangen und mehrmals Lektionen, aber ich immer noch nicht, wie zu verbinden und Feuer „dann“ Anrufe von bestehenden Promises sequentiell :(
ich will:
- erstellen Sie einen Benutzer
- erstellen Aktion
- Link der Benutzer & Aktion
- Update der Benutzer
- Aktualisierung der Aktion
Mein Code wie
var mail = '[email protected]';
Users.create({email:mail, name:''}).then(console.log).fail(console.log);
Actions.create({actionID:123})
.then(function(error, action){
Users.findOneByEmail(mail).then(function(person){
person.actions.add(action.id);
person.save(console.log);
}).fail(console.log)
});
Users.update({email:mail},{name:'Brian'}).exec(console.log);
Actions.update({actionID:123},{now:'running'}).exec(console.log);
sieht aus, als Sie aus dem Code sehen kann ich eine Mischung aus exec & dann habe: P
Ich denke, die Art und Weise Verbinden Sie die Users.create (...). dann -> Action.create (...). dann -> Users.findOneByEmail (...). dann -> * und die Updates.
Huge dank von jeder Hilfe
Ihr 'fail' funktioniert nicht und zieht' catch' vor. Anders als diese gute Arbeit! –
Danke @BenjaminGruenbaum Ich wusste nicht, ob ich ein final done() oder then() zB '}). Then(). Fail ('. Hätte das funktioniert? ODER swapping das fail (...) Für einen Fang (...) meinst du das? – codemeasandwich
Auch auf http://documentup.com/kriskowal/q/#tutorial hat das erste Beispiel 'catch (...). done();' Warum machen wir das? brauche das final ** done **? – codemeasandwich